在Rails中通过javascript渲染自己的部分

时间:2012-01-12 10:02:46

标签: ruby-on-rails ruby renderpartial

假设有一个名为_hello_world.html.erb的部分

<% if toggle %>
    HELLO WORLD ON
    <%= link_to "Turn it off", what_should_come_here %>
<% else %>
    HELLO WORLD OFF
    <%= link_to "Turn it on", what_should_come_here %>
<% end %>

最初这个部分将从像这样的索引文件中调用,

<%= render :partial => 'test/hello_world', :locals => {:toggle => true} %>

但是在我点击切换链接后,它应该在On和Off状态之间切换,这应该基本上再次渲染自己的部分覆盖先前的部分。怎么做?

注意:我已经以http://sscce.org/格式提供了问题。

1 个答案:

答案 0 :(得分:0)

而不是link_to,最好使用link_to_remote

<强> index.html.erb

<div id="toggle_div">
  <%= render :partial => 'test/hello_world', :locals => {:toggle => @toggle} %>
</div>

<强> _hello_world.html.erb

<% if toggle %>
    HELLO WORLD ON
    <%= link_to_remote "Turn it off", my_action_path(:toggle => toggle) %>
<% else %>
    HELLO WORLD OFF
    <%= link_to_remote "Turn it on", my_action_path(:toggle => toggle) %>
<% end %>

正在行动

def myaction
   value = params[:toggle]
   // do something with toggle value

   @toggle = value == "true" ? false: true
   render :update do |page|
     page.replace_html 'toggle_div', :partial => 'hello_world', :locals => {:toggle => @toggle}
   end
end