Rails的未知格式错误(HTML和JS)(Rails Unknown format error (

2019-10-21 12:49发布

我目前使用的Rails 4,我有3个控制器,做到以下几点:

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

他们两个现在工作得很好,但第三控制器抱怨的ActionController ::在ArticlesController#草稿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({ });

并触发物品#草案的行动看起来是在我的rails服务器好,因为它发出一个正确的GET响应。 这里唯一的区别,我认为可能是这种情况是文章#草稿之前,有一个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投入应用/视图/用品/ drafts.js.erb。 所以我不太肯定或可能会造成什么轨抛出这个错误。 我的堆栈跟踪的前几行:

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'

Answer 1:

试着改变你的使用参数名user = User.find_by(id: params[:format])为另一个名称。 应该有使用Rails解析请求格式有问题。



文章来源: Rails Unknown format error (both HTML and JS)