2011-12-18 35 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

相關問題