【问题标题】:Rails 4 ActionController::UnknownFormat format.js errorRails 4 ActionController::UnknownFormat format.js 错误
【发布时间】:2016-03-08 13:03:59
【问题描述】:

我在用户页面上有一个搜索表单

= form_tag(action: 'search', remote: true ) do
    = date_field_tag 'start'
    = submit_tag "Find" 

当我提交表单时,我收到以下错误:

406 Not Acceptable in 4ms (ActiveRecord: 0.7ms)

    ActionController::UnknownFormat - ActionController::UnknownFormat:
      actionpack (4.2.5) lib/action_controller/metal/mime_responds.rb:219:in `respond_to'
      app/controllers/users_controller.rb:40:in `search'

我的控制器动作是:

def search
    puts  params
    respond_to do |format|
      format.js
    end
end

我有一个 search.js.erb 文件,它只打印到控制台。

我不明白为什么这不起作用。

【问题讨论】:

  • 我认为您需要指定格式,例如action: 'search.js'
  • 服务器日志中生成的请求格式是什么?
  • @Pavan Processing by UsersController#search as HTML
  • 就是这样,请求格式是HTML而不是JS。您的代码很好,只要确保您的应用程序中运行了 Javascript。
  • 我确实有javascript运行,其他控制器可以响应js,不知道是什么问题

标签: javascript ruby-on-rails ajax ruby-on-rails-4


【解决方案1】:

您以错误的方式调用方法form_tag。如果您在form_tag 中指定action,则必须在不同的哈希中指定它们。

= form_tag( { action: 'search' }, { remote: true } ) do

这就是为什么您以 HTML 请求而不是 JS 请求的形式获取请求的原因。

您必须明确告诉form_tag,您发送action: 'search' 用于url_for_option 哈希,remote: true 用于options 哈希。

这是方法签名:

form_tag(url_for_options = {}, options = {}, &block)

欲了解更多信息,请前往form_tag。

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多