我有以下link_to:
<%= link_to 'user_' + user.id.to_s, {:controller => 'admin', :action => 'view_user', :id => user.id}, :remote => true %>
但是,当我单击该链接时,出现以下错误:
ActionView::MissingTemplate at /admin/view_user
Missing template admin/view_user, application/view_user with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml, :rabl]}.
Searched in: /Users/me/Documents/production/my_app/app/views
它应该在寻找 view_user.js.erb。该文件肯定存在。
在我更改了处理 jquery 和 jquery-ui 的方式后,似乎出现了这个问题。我现在正在使用 jquery-ui-rails gem。我从 application.js 文件中删除了需要 jquery-ui 和 jquery_ujs 的行。反正我不知道要添加 jquery_ujs (也许它是用rails打包的?)
任何线索可能会发生什么?令人费解的是,我认为明确地说 :remote => true 会导致 JS 文件被渲染。
这是 view_user 的样子:
def view_user
respond_to do |format|
format.js
end
@user = User.find(params[:id])
user_show_helper
end
user_show_helper 是一个巨大的方法,它基本上设置了一组显示用户配置文件片段所需的实例变量(即在 user_show_helper 中没有调用渲染方法)。
这是 view_user.js.erb 的样子:
$("#user_under_review").html("<%= escape_javascript render(:partial => 'admin/view_user' ) %>");
以下是部分 _view_user.html.erb 的样子:
<%= render 'users/user_brief' %>
<div class="table_td_middle" id="<%= 'user_number_' + @user.id.to_s %>">
<%= link_to 'Approve user?', approve_user_as_admin_path(@user.id), :remote => true, :confirm => 'Are you sure you want to approve this user?' %>
</div>