Rails link_to with remote:true在页面刷新后处理html而不是js

Dav*_*age 13 ruby-on-rails ruby-on-rails-3

我的应用程序中有一个搜索页面,其中有一个ajax搜索表单.搜索表单正常工作,将参数传递给模型以过滤搜索,模型返回结果集合.搜索提交后,@results将在页面上呈现.然后每个@result都有一个指向它的动作的链接,例如:

<%=link_to "Message", message_user_path(:id => user.id), :remote => true%>
Run Code Online (Sandbox Code Playgroud)

控制器中的此操作位于:

respond_to :js, :html
def message
  @user_id = params[:id]
  @user = User.find_by_id(@user_id)
  respond_to do |format|
    format.html
    format.js
  end
end
Run Code Online (Sandbox Code Playgroud)

这会响应message.js.erb,它会触发一个消息传递面板,向用户弹出一条消息.所有这一切都正常,检查日志我看到发送的正确的get请求,以及正在处理的正确格式:

Started GET "/users/3/message"
Processing by UsersController#message as JS
Run Code Online (Sandbox Code Playgroud)

但是,如果我刷新页面并尝试单击之前工作的相同链接,则会收到错误模板缺失的错误.检查日志,我看到现在发送了两个请求,首先是html然后是相同的js请求.

Started GET "/users/4/message"
Processing by StudentsController#message as HTML
...
Completed 406 Not Acceptable in 3ms (ActiveRecord: 1.0ms)

Started GET "/users/4/message"
Processing by StudentsController#message as JS
Run Code Online (Sandbox Code Playgroud)

html请求抛出了丢失的模板错误.有谁知道为什么刷新页面导致rails试图用html请求响应远程链接?
编辑:routes.rb

resources :students do
    member do
      get 'message'
    end
end
Run Code Online (Sandbox Code Playgroud)

GMA*_*GMA 25

app/assets/javascripts/application.js含有吗?

//= require jquery
//= require jquery_ujs 
Run Code Online (Sandbox Code Playgroud)

你的erb包含<%= javascript_include_tag "application" %>

我只是在为HOURS这样的问题挣扎,并且这两点的最后一点修正了它; 我看到了其他一些问题中提到的第一点,所以我在这里重复一遍.

希望有所帮助.

(信用到期时的信用)


Ami*_*itF 5

对我来说什么求解器正在添加:format =>“ js”

因此,在您的情况下:

<%=link_to "Message", message_user_path(:id => user.id, :format => "js"), :remote => true %>
Run Code Online (Sandbox Code Playgroud)