我是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时,它可以工作,所以我认为控制器和视图都可以。
答案 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的答案。