Rails未知格式错误(HTML和JS)

我目前正在使用Rails 4,我有3个控制器执行以下操作:

respond_to do |format| format.html format.js end 

其中两个目前工作正常,但第三个控制器抱怨在ArticlesController#草稿中的ActionController :: UnknownFormat。 这是有问题的控制器:

 def drafts @user = current_user @drafts = @user.articles.paginate(page: params[:page], per_page: 5).draft_and_in_order respond_to do |format| format.html format.js end end 

其他两个控制器包含格式片段的动作看起来相似。 它们都使用相同的ajax调用,所以它可能不是那样,并且调用只是对当前页面的简单默认ajax调用(例如)

 $.ajax({ }); 

并且触发文章#rarafts action在我的rails服务器中看起来很好,因为它发出了正确的GET响应。 我认为可能是这种情况的唯一区别是文章#strafts在它之前有一个before_actions:

 before_action :logged_in_user, only: [:new, :create, :update, :destroy, :drafts] before_action :correct_user_format, only: [:new, :drafts] 

因为它们包含一些redirect_to:

  def correct_user_format user = User.find_by(id: params[:format]) unless current_user?(user) redirect_to root_url end end def logged_in_user unless logged_in? flash[:danger] = "Please log in" redirect_to root_url end end 

唉,删除这些和before_actions会遇到同样的错误。 事实上,如果我只做:

 respond_to do |format| format.html end 

要么

 respond_to do |format| format.js end 

我仍然遇到未知格式问题。 所有控制器都是ApplicationController的子类,我相应的.js.erb被放入app / views / articles / drafts.js.erb。 所以我不太确定导致rails输出错误的地方或原因。 我的堆栈跟踪的前几行:

 actionpack (4.2.0.beta4) lib/action_controller/metal/mime_responds.rb:230:in `respond_to' actionpack (4.2.0.beta4) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (4.2.0.beta4) lib/abstract_controller/base.rb:198:in `process_action' actionpack (4.2.0.beta4) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (4.2.0.beta4) lib/abstract_controller/callbacks.rb:20:in `block in process_action' 

尝试将user = User.find_by(id: params[:format])使用的参数名称更改为其他名称。 Rails解析请求格式应该存在问题。