【发布时间】:2011-11-22 19:28:40
【问题描述】:
我无法做以下事情:
在一个页面中我有一个表单;当我提交它时,我想在数据库中插入一条记录,并隐藏该表单,无需重新加载页面。
形式为:
<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;
});
});
在 *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
问题是插入记录后没有显示alert,加载页面'/posts/create'(是空白页,因为我什么都没写在create.rb)我不能使用redirect_to,因为我不知道当前页面是什么(表单将出现在网站的每个页面上)。无论如何,我不想重新加载页面。 (submit() 中的return false 不应离开页面,但确实如此。)可能是什么问题?
附:我不能使用 Rails 3,在那里我看到有一个 remote_form
【问题讨论】:
标签: jquery ruby-on-rails forms