【发布时间】:2011-09-26 07:16:36
【问题描述】:
假设我有一个 application#search 方法,我想响应 AJAX 请求。在我的 JS 视图 (app/views/application/search.js.erb) 中,我想渲染 HTML 视图:
$("#content").html( escape_javascript( render( :action => 'search', :format => 'html' ) ) );
$("#title").html( "Title" );
我知道我可以将内容移动到部分并在 HTML 和 JS 视图中呈现,但问题是我有许多不同的操作需要以这种方式响应,我不想创建一堆 1 - 仅呈现部分的行视图文件。
有什么方法可以显式地呈现具有特定格式的动作并同时获取 content_for 的不同部分?因此,对于上面的示例,我可以将 #title 设置为使用 content_for :title 或其他内容返回的 HTML。
【问题讨论】:
-
这样做的结果是什么?我也在尝试在 JS 视图中使用
escape_javascript( render :action_name, :format => 'html' )类似地呈现 html -
能否请您稍微扩展一下您的问题...您示例中的语法略有错误。
$('#content'). html(escape_javascript('<%= render action: 'search', format: 'html' %>'));api.rubyonrails.org/classes/ActionView/Helpers/… -
答案是使用
:formats => ['html']而不是:format => 'html'。请参阅此处:stackoverflow.com/questions/339130/… 这应该在较新版本的 rails 中修复,请参阅此处:github.com/rails/rails/issues/4841
标签: ruby-on-rails ruby actionview