如何在不提交整个表单的情况下在Rails中远程提交表单的相关部分?

时间:2012-02-22 04:58:03

标签: ruby-on-rails ruby ajax activerecord erb

我有一个简单的Rails表单,允许编辑其关联的父级。我想允许用户使用以下方式提交表单的此部分:remote =>为true,以便用户可以添加新父项,然后在表单中其他位置的更新选择菜单中选择父项。正如您在代码中看到的,我向表单的父项部分添加了一个提交按钮,它甚至知道是否要说“创建”或“更新”,但是当我提交它时,整个页面都会刷新,整个表格提交验证等。如何在Rails中完成我想要的东西?

以下是相关代码:

<%= form_for @sermon, :html => { :multipart => true } do |f| %>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :date %><br />
    <%= f.text_field :date %>
  </div>
  <div class="field">
    <%= f.label "Speaker" %><br />
    <%= f.select :speaker_id, Speaker.all.collect {|p| [ p.name, p.id ] }, {:include_blank => true} %>
  </div>
    <% @sermon.build_speaker unless @sermon.speaker %>
        <%= f.fields_for :speaker, :remote => true, :html => {:data_type => 'html', :id => 'create_speaker_form'} do |g| %>
            <%= g.label :name, "Or, add a new speaker:" %><br />
            <%= g.text_field :name %>
            <%= g.submit %>
        <% end %>
    </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:0)

可能您的问题已在此处How do you submit a rails 3 form without refreshing the page?

得到解答

如果这没有帮助,您可以尝试使用preventDefault()将其附加到提交按钮。