2011-12-18 42 views
0

这就是我的观点看起来(请忽略打开和关闭标签):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 

而且在厂景的最后行动导致视图2至通AJAX显示,反之亦然。但是当view1或view2被渲染时,局部变量'l'不再被识别,并且抛出一个错误导致表单不显示(手册页面刷新除外)。我该怎么做才能使表格工作并坚持我的'l'?

感谢您的帮助提前。

编辑:为厂景我create.js.erb文件(视图2我实际上是破坏方法,以便反之亦然):

$("#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 %> 
+0

哪个失败,你显示的那个,还是显示另一个的Ajax? –

+0

由ajax呈现的表单失败 – Ari53nN3o

+0

然后显示那个会有帮助的部分。 –

回答

2

(不是一个答案)

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

当地人就是这样;本地。我不清楚你在说什么Ajax-- replaceWith只是取代了内容,它没有提出请求。如果全部都在同一请求中,则可以使l为实例变量(@l),然后查看是否清除了某些内容。

+0

感谢您的重构.. – Ari53nN3o

相关问题