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

400使用jQuery.post时出现错误请求错误,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我是Rails新手,正在尝试jQuery.post使用ajax发布表单并显示结果 但我只有在单击“提交”时才能在控制台中看到: POST http://localhost:3000/main/newStuff 400 (Bad Request) 我正在看本书底部的例子 以下是我的ajax代码: $( "#new_stuff_form" ).submit(function( event ) { // Stop form from submitting normally even

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

但我只有在单击“提交”时才能在控制台中看到:

POST http://localhost:3000/main/newStuff 400 (Bad Request) 
我正在看本书底部的例子

以下是我的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 %>

另外,当我不使用ajax时,它可以工作,因此我认为控制器和视图都可以。

尝试使用以下代码:

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

我想你需要添加你的
数据类型
,请看这方面的答案。

你能设置这个
控制台.log
url和title变量以确保它们是正确的吗?嗨@MohamedYakot,是的,我在我的代码中添加了console.log(url)和console.log(title),输出是“/main/newStuff”,并在“title”的表单中输入正确的字符串。我看到您的操作名为
createStuff
,而不是
newStuff
,您是否忘记更改它?。如果没有,请键入
newStuff
操作,但我的路线设置是:
post'main/newStuff'=>'main#createStuff',as::stuff\u create
有问题吗?
$.post( url, { title: title }, function() {
   alert( "success" );
 })
 .done(function(data) {
   console.log(data);
 })
 .fail(function(data) {
   console.log(data);
 }), dataType: "json" );