Rails 4:escape_javascript渲染部分不起作用
在我的Rails 4应用程序中,我试图将一些视图显示为modals
(使用Bootstrap模式),而不是常规的.html.erb
视图。
例如,我有一个calendar
模型,在控制器中有自定义analysis
操作:
def analysis @calendar = Calendar.find(params[:id]) respond_to do |format| format.js end end
按照本教程和其他教程中的说明 ,我尝试创建以下文件:
# _dialog.html.erb
# _analysis.html.erb Analysis
# analysis.js.erb // Add the dialog title $('#dialog h3').html("Calendar Analysis"); // Render calendar analysis $('.modal-body').html(' 'calendars/analysis') %>'); // Show the dynamic dialog $('#dialog').modal("show"); // Set focus to the first element $('#dialog').on('shown.bs.modal', function () { $('.first_input').focus() })
最后但并非最不重要的是,我使用帮助器和以下链接调用
_heading.html.erb
partial中的模态,在日历show.html.erb
视图中
<%= link_to ''.html_safe, calendar_analysis_path, :remote => true, 'data-toggle' => "modal", 'data-target' => '#modal-window' %>
当我启动我的应用程序时,我得到以下错误:
undefined method `render' for #<#:0x007fee23577ce0>
—–
更新 :我尝试了不同的方法来渲染部分:
- 按照这里的建议 ,我尝试了
escape_javascript render
和j render
。 - 正如那里推荐的那样 ,我也尝试过
render_to_string
而不仅仅是render
。 - 正如在其他问题中所推荐的那样,我甚至尝试了不同的方法来调用partial,包括
render(:partial => 'calendars/analysis')
和(render 'calendars/analysis')
。
但这些解决方案都没有奏效。
—–
我已经就这个话题做了很多研究,我不得不说现在我很困惑。
虽然上面提到的这两个教程都推荐了这种方法,但其他来源, 包括这个 ,指出你不能在Rails中渲染部分资产。
因此:
- 我目前的代码有什么问题?
- 我试图使用的方法是否有意义,如果不是,我会做什么呢?
app/assets
下的代码无法调用render
。 实际上,除了极少数方法之外,它几乎不能调用任何东西。
将它移动到app/views/somethings/analysis.js.erb
somethings
是控制器的复数forms的名称,所以只需将它放在_analysis.html.erb
附近_analysis.html.erb
。