我知道在控制器操作中,作为JS响应,而不是拥有.js.erb
模板,如果它不是太复杂,我可以直接运行所需的JS命令。举个例子:
respond_to do |format|
# Delete the row from the table containing this user
format.js{ render js: "$('#delete_#{user.id.to_i}').closest('tr').remove();" }
end
注意:需要调用控制器操作来执行数据库操作。
这使我无需创建一行.js.erb
文件而不会弄脏我的控制器代码。但是,当我尝试使用它来呈现部分时,我根本没有取得任何成功。例如,在.js.erb
文件中,我会这样称呼它:
$('#emailform').html("<%= raw j(render partial: 'admin/email_form') %>");
但是尝试从控制器使用这样的JS命令对我来说不起作用。我的猜测是它是一个字符串连接问题。
有可能做我想要的吗?首先想要它是一个好主意吗?!
答案 0 :(得分:1)
这些是rails中控制器最相关的渲染选项,由于我不完全理解你的问题,你可以自己决定哪一个是最适合你的选择:
render :edit
render action: :edit
render "edit"
render "edit.html.erb"
render action: "edit"
render action: "edit.html.erb"
render "books/edit"
render "books/edit.html.erb"
render template: "books/edit"
render template: "books/edit.html.erb"
render "/path/to/rails/app/views/books/edit"
render "/path/to/rails/app/views/books/edit.html.erb"
render file: "/path/to/rails/app/views/books/edit"
render file: "/path/to/rails/app/views/books/edit.html.erb"
render json: @product
render xml: @product
render html: "<strong>Not Found</strong>".html_safe
render js: "alert('Hello Rails');"
有关更多渲染选项,您可以查看this link