【问题标题】:Remote form in rails with jQuery not working使用 jQuery 的 Rails 中的远程表单不起作用
【发布时间】: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


    【解决方案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');
            });           
        });
    });
    

    【讨论】:

    • 如果我添加e.preventDefault();,当我按下提交时没有任何反应。
    • 如果post 是在preventDefault submit 的行为时产生的,你能检查萤火虫吗
    • 我该怎么做?如果我在preventDefault() 之后添加alert(),则会显示警报。但不知道会不会更进一步。没有插入新记录。
    • 为 mozilla firefox 安装 firebug 插件,chrome 内置了开发者工具,您可以在其中看到在网络选项卡下发出的 ajax 请求,在 chrome 中点击 f12 以调出开发者工具。 ..getfirebug.com/..........as 据我所知,$.post 无法正常工作的原因可能很多,但如果不进行调试,则无法判断。
    • form["content"].value 出现错误。如果我删除 .value,它会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2013-08-12
    相关资源
    最近更新 更多