Thursday, October 1, 2009

RJS in Ruby On Rails

RJS allows you to write ruby instead of javascript.

Your rjs file is just normal ruby, so you can do things like
if @divs_to_hide
page.hide(@divs_to_hide)
end

if @element_to_remove
page[@element_to_remove].remove()

end


TO update partial file...

--------------------------

render :update do |page|

page[:div_project_efforts].innerHTML = render :partial => "project_effort_graph"

end

==================================================================

Using Link_to_function

RJS to hide,show and to assign a value to call render partial with innerHTML on view side.

--------------------------------------------------------------------------

<%= link_to_function "Edit" do |page|

page[:postbulletin].show;

page[:bulletin_title].value = bulletin.title;

page["bulletin[message]"].value = bulletin.message;

(bulletin.video_id != 0) ? (page[:addupdatevideo].innerHTML = render :partial => 'users/get_video';page[:addupdatevideo].show;) : (page[:addupdatevideo].hide);

(bulletin.video_id != 0) ? page[:addupdatevideo1].hide : page[:addupdatevideo1].show;

page[:bulletin_video].value = @video.id if bulletin.video_id != 0;

page[:bulletin_id].value = bulletin.id;

page[:error_messages].hide;

(bulletin.expired == true) ? (page[:bulletin_expiration].checked = false) : (page[:bulletin_expiration].checked = true) ;

end %>

Saturday, May 30, 2009

RJS using IF condition in ROR

Write a if condition in RJS

  page << "if($('some_div').visible()){"

page['some_div'].replace :partial => 'some_partial'
page << '}else{'
page.insert_html :after, 'something_else', :partial => 'header'
page << '}'

--------------------------------------------------------------------------------
render :update do |page|

page << "if ($('editvideodetail')){"

page.replace "editvideodetail", :partial => 'show_video_detail'

page["showvideodetail"].visual_effect(:highlight)

page << "} else { if ($('showvideodetail')) {"

page[:showvideodetail].remove

page << "}"

page.insert_html :after,"video_id_#{params[:id]}", :partial => 'show_video_detail'

page["video_id_#{params[:id]}"].visual_effect(:highlight)

page << "}"

end

render :update do |page|

page << "if ($('div_add_note').style.display == 'none'){"

page[:div_add_note].show

page << "} else {"

page[:div_add_note].hide

page << "}"

end

=======================================================