【发布时间】:2013-06-10 20:18:12
【问题描述】:
我是 Rails 新手,遇到了无法渲染 .js.erb 文件的问题。我认为问题的根源在于 Rails 的内部路由机制希望我这样命名和配置我的文件,但我缺少一两部分,我不确定如何查找需要修复的部分.
我有一个带有控制器操作链接的 HTML 视图:
<%# snip %>
<div id="holding_issues_list">
<%= link_to "Show issues on hold", {
:action => "show_user_issues",
:controller => "support",
:issue_type => "holding",
:user_id => @user.id },
:remote => true %>
</div>
<%# snip %>
我认为(但我不确定):remote => true 会导致链接进行 AJAX 调用。
这是控制器app/controllers/support_controller.rb中对应的控制器动作:
def show_user_issues
@target_div = params[:target_div] || "holding_issues_list"
user = User.find(params[:user_id])
issue_type = params[:issue_type]
#snip - set the value of @issues
end
我希望在控制器退出时呈现这个名为 show_user_issues.js.erb 并放置在 app/views/support 中的文件:
$("#<%= @target_div %>").show();
alert('test');
$("#<%= @target_div %>").html(
"<%= escape_javascript render :partial => '_show_user_issues', :locals => {:target_div => @target_div, :issues => @issues} %>");
这是app/views/support/_show_user_issues.html.erb,我想让show_user_issues.js.erb渲染的部分:
<% for issue in @active_issues %>
<div id="issue_<%= issue.id %>_display">
<%= render :partial => 'show_issue_mini', :locals => {:issue => issue} %>
</div>
<% end %>
当我尝试单击原始 HTML 视图中的链接时,没有任何反应。当我在新选项卡中打开它时,我收到以下错误消息:
模板丢失
缺少模板支持/show_user_issues, 应用程序/show_user_issues 与 {:locale=>[:en], :handlers=>[:builder, :erb], :formats=>[:html]}。搜索:* "/home//app/views" * "/home//gems/kaminari-0.14.1/app/views"
我放入 show_user_issues.js.erb 的 alert('test') 没有显示出来,所以我认为 Rails 在渲染该文件时挂了 - 也就是说,路由机制不能找到它。我该如何解决这个问题?
附:我仔细检查了所有文件名是否与代码库中的完全相同。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.2