Рендеринг собственного частичного с помощью JavaScript в Rails - PullRequest
1 голос
/ 12 января 2012

Скажем, есть частичный _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} %>

Но после того, как я щелкну по ссылке переключения, она должна переключаться между состояниями «Вкл» и «Выкл», которые должны в основном визуализировать собственный фрагмент снова, перекрывая предыдущий. Как это сделать?

Примечание: я задал Вопрос в формате http://sscce.org/.

1 Ответ

0 голосов
/ 12 января 2012

вместо 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
...