javascript - CareersController 中的 ActionController::UnknownFormat#create for rails 4

标签 javascript ruby-on-rails-4

我正在尝试为提交表单时弹出的“成功消息”整合 js 文件。 它说,ActionController::UnknownFormat in CareersController#create

在我的 Controller 中:

   def create
    @career = Career.new(career_params)

    respond_to do |format|
      if @career.save
        format.js {render :template => 'careers/create', :locals => { :career => @career}  }
      else
        format.html { render :new, :locals => { :career => @career} }
      end
    end
  end

和我的 create.js.erb 文件:

$(document).ready(function(){

    $("#new_career").submit(function(e){
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax(
                {
                    url : formURL,
                    type: "POST",
                    data : postData,
                    format: 'js',
        success:function(data, textStatus, jqXHR)
        {
            alert("Form has been submitted");
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert("Network connection problem");
        }
    });
    e.preventDefault(); //STOP default action
    e.unbind(); //unbind. to stop multiple form submit.
});

})

这是我的服务器错误日志:

Started POST "/careers" for ::1 at 2015-06-15 21:54:32 +0600
Processing by CareersController#create as HTML
  Parameters: {"utf8"=>"√", "authenticity_token"=>"3NOJnGQZsFuYtd4JdNGl4wVmIh7at3laQDfjYyp1iPxt/xUdokGqSaAQiWOb+zEh2yvrW6IE3CrnPXQhwBADTg==", "career"=>{"full_name"=>"mezbah", "email
"=>"mezbahalam26@gmail.com", "phone_number"=>"01742626262"}, "commit"=>"SUBMIT APPLICATION"}
   (0.0ms)  begin transaction
  SQL (1.0ms)  INSERT INTO "careers" ("full_name", "email", "phone_number", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?)  [["full_name", "mezbah"], ["email", "mezbahalam26@gmai
l.com"], ["phone_number", "01742626262"], ["created_at", "2015-06-15 15:54:32.107023"], ["updated_at", "2015-06-15 15:54:32.107023"]]
   (172.2ms)  commit transaction
Completed 406 Not Acceptable in 178ms (ActiveRecord: 173.2ms)

ActionController::UnknownFormat (ActionController::UnknownFormat):
  app/controllers/careers_controller.rb:21:in `create'


  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.0ms)
  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (48.0ms)
Cannot render console with content type multipart/form-dataAllowed content types: [#<Mime::Type:0x42c5208 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">, #<
Mime::Type:0x42c4458 @synonyms=[], @symbol=:text, @string="text/plain">, #<Mime::Type:0x4267e48 @synonyms=[], @symbol=:url_encoded_form, @string="application/x-www-form-urlencoded">]

我做错了什么?请帮忙

最佳答案

ActionController::UnknownFormat in CareersController#create

您已将格式定义为 json 而不是 js。改成这样

def create
    @career = Career.new(career_params)

    respond_to do |format|
      if @career.save
        format.js {render :template => 'careers/create', :locals => { :career => @career}  }
      else
        format.html { render :new, :locals => { :career => @career} }
      end
    end
  end

更新

您还应该在 ajax

中定义format as js
#create.js.erb
$(document).ready(function(){

    $("#new_career").submit(function(e){
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax(
            {
                url : formURL,
                type: "POST",
                data : postData,
                format: 'js', #here
                success:function(data, textStatus, jqXHR)
                {
                    alert("Form has been submitted");
                },
                error: function(jqXHR, textStatus, errorThrown){
                    alert("Network connection problem");
                }
            });
        e.preventDefault(); //STOP default action
        e.unbind(); //unbind. to stop multiple form submit.
    });

})

关于javascript - CareersController 中的 ActionController::UnknownFormat#create for rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849400/

相关文章:

ruby-on-rails - jquery-file-upload POST 和嵌套路由 - 没有路由匹配 PATCH

javascript - 如何解决 Heroku 上找不到模块的问题?

javascript - 如何仅删除一个特定的数据集标签chartJS?

css - 更改自动填充值的背景输入字段的颜色

ruby-on-rails-4 - 将 Controller 中的 Rails 表单元素初始化为默认值,如 @object.name ='John' ?

ruby-on-rails - Rails 4 + bootstrap 设置 Assets

ruby-on-rails - Action Mailer 附件的未定义方法 URL

javascript - 选项卡仅在加载时显示过多内容,单击后自行修复

javascript - 我需要一些关于如何实现惯性的指导

javascript - 如何使用jquery检查网页中的id是否存在