Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails ActionController::未知信息格式错误,响应为_Ruby On Rails_Ruby_Ajax_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails ActionController::未知信息格式错误,响应为

Ruby on rails Rails ActionController::未知信息格式错误,响应为,ruby-on-rails,ruby,ajax,ruby-on-rails-4,Ruby On Rails,Ruby,Ajax,Ruby On Rails 4,我在尝试使用ajax时遇到了这个错误。我做了一些搜索,但无法解决我的问题 ActionController::未知信息格式 草稿管理员: def index if params["format"] != nil @draft = Draft.find_by(id: params["format"].to_i) respond_to do |format| format.js end end @draft = curr

我在尝试使用ajax时遇到了这个错误。我做了一些搜索,但无法解决我的问题

ActionController::未知信息格式

草稿管理员:

  def index
    if params["format"] != nil
      @draft = Draft.find_by(id: params["format"].to_i)
      respond_to do |format|
        format.js
      end
    end
    @draft = current_user.drafts.build
    @drafts = current_user.drafts.non_submitted
    @being_edited_drafts = current_user.drafts.being_edited
    @completed_drafts = current_user.drafts.completed
  end
index.js.erb

$('.draft_<%= @draft.id %>').trigger('click');
创建方法。这将使用params[“format”]加载索引

调用create方法的窗体

= form_for @draft, :html => { :multipart => true } do |f|
  = f.hidden_field :user_id, value: current_user.id
  #new-post-title
    = f.text_field :title, :value => "<h1><b>Title</b></h2>"

  #new-post-body
   = f.text_area :body, :value => "<p>Start writing</p>"

  .text-center
   = f.submit "New Draft", :class => "btn btn-sm btn-primary btn-round"
=form_for@draft,:html=>{:multipart=>true}do|f|
=f.hidden_字段:user_id,值:current_user.id
#新职位名称
=f.text_字段:title,:value=>“title”
#新邮政机构
=f.text\u区域:body,:value=>“开始写入”
.文本中心
=f.提交“新草案”,类别=>“btn btn sm btn主btn回合”

首先,在隐式调用
render
(在
respond\u to
块中)之后,您仍然在指定实例变量。这些实例变量声明应该在任何呈现之上

此外,我在一些浏览器中也看到过这种情况。您可以通过为
html
类型声明一个虚拟渲染块来绕过它,例如:

respond_to do |format|
  format.html { render(:text => "not implemented") }
  format.js
end

html
格式块可能永远不会被调用,但它仍然声明了。

这个问题发生在我身上,只需添加就可以解决

 respond_to :html, :json
到应用程序_controller.rb文件


您可以在Github上检查设计问题:

您需要将
remote:true
添加到表单帮助器,因为您试图使用ajax提交表单

= form_for @draft, :html => { :multipart => true }, remote: true do |f|
  = f.hidden_field :user_id, value: current_user.id
  #new-post-title
    = f.text_field :title, :value => "<h1><b>Title</b></h2>"

  #new-post-body
   = f.text_area :body, :value => "<p>Start writing</p>"

  .text-center
   = f.submit "New Draft", :class => "btn btn-sm btn-primary btn-round"
=form_for@draft,:html=>{:multipart=>true},remote:true do|f|
=f.hidden_字段:user_id,值:current_user.id
#新职位名称
=f.text_字段:title,:value=>“title”
#新邮政机构
=f.text\u区域:body,:value=>“开始写入”
.文本中心
=f.提交“新草案”,类别=>“btn btn sm btn主btn回合”

您必须确保您的请求传递了正确的标题

在我的例子中,我使用的是railsapi,我的rspec测试调用的是“default”类型,而不是实现的类型(json或csv)。 所以我得到了上面描述的错误


为了解决这个问题,我刚刚在测试中设置了请求头,一切都正常。

这是在
索引上发生的还是在
创建时发生的?是的,问得好,@urigassi。如果您希望您的创建操作用javascript响应,那么实际上您需要一个create.js.erb文件来与此对应。但是,如果确实希望索引操作使用javascript响应,则需要相应的index.js.erb文件。很抱歉,该文件名为
index.js.erb
我写错了文件名。请添加服务器日志跟踪。如果您能给出简单的答案,我们将不胜感激。
在5毫秒内完成406,这是不可接受的未定义响应类型!!!它不知何故与mime类型有关,这些类型被误导了,或者需要从发送表单的位置进行检查!您能否共享该脚本并查看表单或链接的一部分?
 respond_to :html, :json
= form_for @draft, :html => { :multipart => true }, remote: true do |f|
  = f.hidden_field :user_id, value: current_user.id
  #new-post-title
    = f.text_field :title, :value => "<h1><b>Title</b></h2>"

  #new-post-body
   = f.text_area :body, :value => "<p>Start writing</p>"

  .text-center
   = f.submit "New Draft", :class => "btn btn-sm btn-primary btn-round"