轨道中的远程表单与jQuery无法正常工作

时间:2011-11-22 19:28:40

标签: jquery ruby-on-rails forms

我无法做以下事情:

在页面中我有一个表格;当我提交它时,我想在数据库中插入一条记录,并隐藏该表格,不用重新加载页面。

表格是:

<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

1 个答案:

答案 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');
        });           
    });
});