1 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
您似乎完全誤解了 JS.erb 模板的工作原理。
您不.js.erb使用javascript_pack_tag. 那是在資產(chǎn)管道中引用資產(chǎn)。而且您不能在資產(chǎn)管道中渲染部分,因?yàn)樗鼈兪窃诓渴饡r(shí)編譯的。
你只是得到一個(gè)文字字符串的原因"<%= j render(partial: 'teacher_form') %>"是資產(chǎn)不是通過(guò) webpack 中的 ERB 發(fā)送的。Sprockets 會(huì)做到這一點(diǎn)并引發(fā)錯(cuò)誤。
相反,您將編寫(xiě)js.erb模板以更改頁(yè)面:
def show
@teachers = @year.teachers
respond_to do |format|
format.html
format.js # renders show.js.erb
end
end
// You can't use imports since this is not run in the assets pipeline
// you have to make jQuery a global
$("#teacher-form").html("<%= j render(partial: 'teacher_form' %>");
當(dāng)您單擊鏈接時(shí),Rails ujs 驅(qū)動(dòng)程序?qū)嶋H上只是加載該腳本并在頁(yè)面上對(duì)其進(jìn)行評(píng)估。前提是這可以讓您在沒(méi)有 SPA 框架或?qū)嶋H編寫(xiě)請(qǐng)求處理程序的情況下執(zhí)行 ajax 請(qǐng)求和 SPA 之類的東西。它是否是一個(gè)好主意是值得商榷的。
我不明白的是,為什么您不首先將表單放在視圖中,而只是切換其可見(jiàn)性,而不是讓服務(wù)器將其同化,這只是客戶端轉(zhuǎn)換。
添加回答
舉報(bào)