2012-06-21 2 views
1

Я создал несколько горизонтальных вкладок с помощью Twitter Bootstrap и я рендеринга формы внутри каждой из вкладок:Отправить кнопку вне form_for петли

<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/сайтов/форма у меня есть:

<%= 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 %> 

Я хочу переместить кнопку отправки за пределы области «табуляция», поэтому, когда пользователь нажимает кнопку «Отправить», отображаются все три области формы. Все формы будут использовать ту же самую модель и одно и то же действие, но будут иметь разное поле. Идея похожа на мастера, за исключением того, что я использую вкладки.

Кто-нибудь знает, как я могу перемещать кнопку отправки за пределы цикла form_for и как я могу представить три формы одной кнопкой?

ответ

0

Я думаю, что лучший способ сделать это с помощью Javascript: вы можете перемещать кнопку и отправлять 3 формы за один раз через Ajax. Если вы используете JQuery, вы можете использовать http://jquery.malsup.com/form

2

Я не знаю, можете ли вы отправить 3 формы за раз. Но вы можете это сделать:

<div class="tab-content"> 
    <%= simple_form_for(@shipdr_website) do |f| %> 
    <div id="tab1" class="tab-pane active"> 
     <%= render :partial => "shipdr/websites/form", locals => {:f => f, :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> 
    <% end %> 
</div> 

И удалите это из ваших партикулов, оставив только входы.

<%= simple_form_for(@shipdr_website) do |f| %> 
+0

Отлично, спасибо. Кажется, он работает, когда я перемещаю форму из частичного. Однако, когда я называю частичное, как вы описываете, я получаю неопределенную ошибку переменной для 'f'. Вы знаете, почему это так? – user1152142

+0

Я отредактировал ответ. Некоторый плохой отформатированный код в рендеринге: частичный. –

+0

Я также использую подобную систему с большой формой, распространяющейся на несколько вкладок. Однако одна «большая» форма имеет некоторые недостатки. В некоторых вкладках вы можете захотеть вставить какой-то не связанный с формой контент или какую-нибудь кнопку__ для другого пути POST. Способы нереста и передача данных через атрибуты данных являются обходным путем. –

Смежные вопросы