Twitter ブートストラップを使用していくつかの水平タブを設定し、各タブ内にフォームをレンダリングしています。
<div class="tab-content">
<div id="tab1" class="tab-pane active">
<%= render :partial => "shipdr/websites/form", locals: {:@shipdr_website => shipdr_website} %>
</div>
<div id="tab2" class="tab-pane">
Another form (not yet implemented)
</div>
<div id="tab3" class="tab-pane">
Another form (not yet implemented).
</div>
</div>
次に、shipdr/websites/form に次のものがあります。
<%= simple_form_for(@shipdr_website) do |f| %>
<% if @shipdr_website.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@shipdr_website.errors.count, "error") %> prohibited this shipdr_website from being saved:</h2>
<ul>
<% @shipdr_website.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.input :name %>
</div>
<div class="field">
<%= f.input :url %>
</div>
<div class="field">
<%= f.input :api_key %>
</div>
<div class="actions">
<%= f.submit nil, :class => "btn btn-primary" %>
</div>
<% end %>
送信ボタンを「タブコンテンツ」領域の外に移動して、ユーザーが送信ボタンをクリックすると、3 つのフォーム領域すべてが送信されるようにします。すべてのフォームは同じモデルと同じアクションを使用しますが、フィールドは異なります。タブを使用していることを除いて、アイデアはウィザードに似ています。
送信ボタンを form_for ループの外に移動する方法と、1 つのボタンで 3 つのフォームを送信する方法を知っている人はいますか?