使用jQuery.post时出现400错误请求错误

时间:2014-09-05 18:15:42

标签: jquery ruby-on-rails ajax

我是Rails的新手,正在尝试使用ajax发布jQuery.post并显示结果。

但是,当我点击提交时,我只能在我的控制台中显示:

POST http://localhost:3000/main/newStuff 400 (Bad Request) 

我正在查看this jQuery page底部的示例。

这是我的ajax代码:

$( "#new_stuff_form" ).submit(function( event ) {
    // Stop form from submitting normally
    event.preventDefault();

    // Get some values from elements on the page:
    var $form = $( this ),
        title = $form.find( "#new_stuff_title" ).val(),
        url = $form.attr( "action" );

    // Send the data using post
    var posting = $.post( url, { title: title } );

    posting.done(function( data ) {
        console.log(data);
    });
    posting.fail(function( data ) {
        console.log(data);
    });
});

这是我的控制器:

def createStuff
    @stuff = Stuff.new(stuff_params)
    @stuff.save
    render json: {status: "ok"}
end

private
def stuff_params
    params.require(:stuff).permit(:title, :due_date)
end

以下是我的观点:

<%= simple_form_for @stuff, url: stuff_create_path, html: {id: "new_stuff_form",class: "form-horizontal", role: "form"} do |f| %>
<div class="form-group">
    <label for="new_stuff_title" class="col-sm-2 control-label">Title</label>
    <div class="col-sm-10">
        <%= f.input_field :title, class: 'form-control', id: 'new_stuff_title' %>
    </div>
</div>
<%= f.button :submit %>

这是我的路线设定:

post 'main/newStuff' => 'main#createStuff', as: :stuff_create

P.S。当我不使用ajax时,它可以工作,所以我认为控制器和视图都可以。

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码:

$.post( url, { title: title }, function() {
   alert( "success" );
 })
 .done(function(data) {
   console.log(data);
 })
 .fail(function(data) {
   console.log(data);
 }), dataType: "json" );

我认为您需要添加dataType,请参阅此question的答案。