1 回答

TA贡献1824条经验 获得超6个赞
您似乎完全误解了 JS.erb 模板的工作原理。
您不.js.erb使用javascript_pack_tag. 那是在资产管道中引用资产。而且您不能在资产管道中渲染部分,因为它们是在部署时编译的。
你只是得到一个文字字符串的原因"<%= j render(partial: 'teacher_form') %>"是资产不是通过 webpack 中的 ERB 发送的。Sprockets 会做到这一点并引发错误。
相反,您将编写js.erb模板以更改页面:
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' %>");
当您单击链接时,Rails ujs 驱动程序实际上只是加载该脚本并在页面上对其进行评估。前提是这可以让您在没有 SPA 框架或实际编写请求处理程序的情况下执行 ajax 请求和 SPA 之类的东西。它是否是一个好主意是值得商榷的。
我不明白的是,为什么您不首先将表单放在视图中,而只是切换其可见性,而不是让服务器将其同化,这只是客户端转换。
添加回答
举报