如何从控制器动作渲染部分(没有JS ERB,只是用户渲染js:“command_string”)

时间:2016-09-08 11:23:18

标签: ruby-on-rails

我知道在控制器操作中,作为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命令对我来说不起作用。我的猜测是它是一个字符串连接问题。

有可能做我想要的吗?首先想要它是一个好主意吗?!

1 个答案:

答案 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