Rails," respond_to do | format |"返回ActionController :: UnknownFormat

时间:2016-05-23 16:00:07

标签: javascript ruby-on-rails ruby

我正试图直接从我的控制器运行一些javascript。

我已经在 views / articles / create.js.erb

中创建了我的JS文件

在我的 articles_controller

def create
        @article = Article.new(article_params)
        if @article.save && manage_strings
            @status = 'success'
        else
            @status = 'error'
            @errormessages= @article.errors.full_messages
        end
        respond_to do |format|
            format.js
        end

end

当我运行我的应用时, respond_to do | format | 为我提供了 ActionController :: UnknownFormat

我尝试使用以下行更新 mime_types.rb 并按照其他地方的建议重新启动我的服务器,但没有结果:

Mime::Type.register "application/javascript", :js

奇怪的是,在我的 languages_controller 中,以下内容与 views / languages / list.js.erb 中的js文件完美配合。

def list
    respond_to do |format|
        format.js
    end
end

关于什么可能有问题的任何想法或建议?

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您的创建操作不应该是这样的吗?

def create
  @article = Article.new(article_params)
  respond_to do |format|
    if @article.save && manage_strings
      format.html { redirect_to @article, notice: 'Article was successfully created.' }
      format.json { render :show, status: :created, location: @article }
    else
      format.html { render :new }
      format.json { render json: @article.errors.full_messages, status: :unprocessable_entity }
    end
  end

end

答案 1 :(得分:1)

最可能的解释是请求不是请求JS。为了让rails将请求视为JS,路径需要以.js结尾或具有正确的AcceptContent-Type标头。并不是mime类型没有注册rails,因为它注册了javascript最常见的mime类型。

  1. 检查rails日志以确认:tail -f logs/development.log
  2. 检查浏览器控制台是否有错误。
  3. 检查具有data-remote="true"属性的表单。
  4. <%= form_for(@thing, remote: true) %>