我无法做以下事情:
在页面中我有一个表格;当我提交它时,我想在数据库中插入一条记录,并隐藏该表格,不用重新加载页面。
表格是:
<div class="slide-out-div">
<% form_for @post, :url=>'/posts/create', :remote => true do |f| %>
<%= f.text_area :content %>
<%= f.submit 'submit' %>
<% end %>
</div>
application.js 中的我有:
$(document).ready(function(){
$("#new_post").submit(function() {
var form = $(this);
var url = form.attr("action");
var cont = form["content"].value;
var formData = form.serialize();
$.post(url, formData, function(html) {
alert('Message sent');
$(".slide-out-div").hide('fast');
});
return false;
});
});
in * posts_controller.rb *:
def create
if !params[:post][:content].nil? and params[:post][:content].length>0
@post = Post.new(params[:post])
@post.save
end
end
问题是,在插入记录后,警报未显示,并且页面'/ posts / create'已加载(这是一个空白页面,因为我没有写任何东西在create.rb
)我不能使用redirect_to,因为我不知道当前页面是什么(表单将在网站的每个页面上)。无论如何,我不想重新加载页面。 ({(1}}在submit()中不应该离开页面,但确实如此。)可能是什么问题?
P.S。我不能使用Rails 3,我看到有一个remote_form
答案 0 :(得分:1)
$(document).ready(function(){
$("#new_post").submit(function(e) {
e.preventDefault(); <-- prevent the default form submission
var form = $(this);
var url = form.attr("action");
var cont = form.find("name='post\\[content\\]'").val();
var formData = form.serialize();
$.post(url, formData, function(html) {
alert('Message sent');
$(".slide-out-div").hide('fast');
});
});
});