rails3 ajax:通过ajax持久化局部变量的最佳方式是什么?



这是我的视图的样子(请忽略开始和结束标记):

@obj1.leaves.each do |l|
    <div id = "form">
        if <some_condition>
            render :partial => 'shared/view1', :locals => { :l => l }
        else
            render :partial => 'shared/view2', :locals => { :l => l }
        end
    </div>
end

view1上的最后一个动作导致view2显示,通过ajax反之亦然。但是,当呈现view1或view2时,局部变量'l'不再被识别,并抛出一个错误,导致表单不显示(手动页面刷新除外)。我怎么做才能使表单工作并持久化我的"l"?

提前感谢您的帮助。

编辑:我的create.js.erb文件为view1 (view2实际上是销毁方法,反之亦然):

$("#form").replaceWith("<%= escape_javascript(render('shared/view2')).html_safe %>") 

我的实际视图:

<%= form_for([l, l.likes.build], :remote => true) do |f| %>
<div class="actions"><%= f.submit "Like" %></div>
<% end %> 

(不是答案)

@obj1.leaves.each do |l|
  partial = <some_condition> ? 'shared/view1' : 'shared/view2'
  render :partial => partial, :locals => { :l => l }
end

Locals就是这样;当地。我不清楚你在说什么Ajax——replaceWith只是替换内容,它不发出请求。如果它都在同一个请求中,您可以使l成为一个实例变量(@l),看看这是否清除了事情。

最新更新