更新:我剛剛發現這個其他線程,解釋了爲什麼我遇到此問題(Pass local rails variable to javascript to partial),但未列出步驟修復它(或者至少它跳過了太多我還不知道該怎麼做的步驟)。問題似乎是,傳遞給局部變量的局部變量不再是new.html時存在的局部變量.erb被加載,因爲部分直到click事件才被加載。有可能解決這個問題嗎?謝謝。將局部變量傳遞給視圖已經加載後呈現的局部
原文:
我綁一個鏈接,只能在某些時候click事件,我不知道爲什麼。當單擊鏈接而不重新加載頁面時,它應該呈現給我的視圖。
這是我現在有(沒有工作):
comps_helper.rb:
def addRound(f)
render "add_round", f: f
end
譜曲/ new.html.erb
<div id="add_round"></div>
<%= link_to "Add round", addRoundLink_path, remote: true %>
addRoundLink.js。 erb
$("#add_round").html("<%=j addRound(f) %>");
什麼不工作:
如果我直接從new.html.erb調用輔助方法與<%= addRound%>,它的工作原理。但我需要在點擊鏈接時觸發它,以便用戶可以根據需要添加儘可能多的部分。
如果'f'參數未包含在上面的代碼中,那麼javascript在單擊時會起作用。例如,如果我更改了部分,所以它只包含一個文本字符串,它將在單擊鏈接時呈現該文本。這讓我覺得我在javascript中包含了'f'參數是個問題。但我不確定爲什麼會出現這種情況,因爲不是JavaScript,只是將該代碼插入到new.html.erb中,並在其中添加了「add_round」id的div。
注:這是我在我的JavaScript控制檯,當我點擊鏈接: GET HTTP //0.0.0.0:3000/addRoundLink 500(內部服務器錯誤)
的jquery.js:8215
謝謝。
感謝。這就說得通了。然而,局部變量'f'實際上只是表單生成器的一部分,部分只包含表單的其他部分(所以我不認爲'f'是由我的模型對象/實例確定的,它?)我應該更具體。無論如何要通過這個變量? – Josh
鏈接中的答案可能會對您有所幫助。你可以將你的模型傳遞給partial,並在你的partial中使用form_for來獲得FormBuilder對象,或者你可以在控制器中實例化一個,然後傳入它。http://stackoverflow.com/questions/371147/rails-ajax-my -partial-需求-A-formbuilder實例 – zeikt