繁体   English   中英

Rails,“ respond_to do | format |”返回ActionController :: UnknownFormat

[英]Rails, “respond_to do |format|” returns ActionController::UnknownFormat

我正在尝试直接从控制器运行一些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

当我运行我的应用程序时, response_do做| format | 给我ActionController :: UnknownFormat

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

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

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

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

关于这里可能存在什么问题的任何想法或建议?

任何帮助表示赞赏。

您的create动作不应该是这样吗?

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

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

  1. 检查rails日志以确认: tail -f logs/development.log
  2. 检查浏览器控制台中是否有错误。
  3. 检查具有data-remote="true"属性的表单。

<%= form_for(@thing, remote: true) %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM