2017-09-01 129 views
0

有沒有一種方法,不使用JavaScript,在一個視圖中有兩種形式,並通過點擊一個提交按鈕提交兩種?紅寶石提交2個表單提交一個按鈕

我有我的看法如下:

<%= form_for(@attendee) do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

<%= form_for(@event_attendee) do |f| %> 
    <div class="field"> 
    <%= f.label :attendee_id %><br> 
    <%= f.number_field :attendee_id %> 
    </div> 
    <div class="field"> 
    <%= f.label :event_id %><br> 
    <%= f.number_field :event_id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

以下是我的控制器:

def registration 
    @event=Event.find(params[:id]) 
    @attendee=Attendee.new 
    @event_attendee = EventAttendee.new 
    end 
+2

不,沒有沒有JavaScript。 –

+0

好了!非常感謝你。 :) – Acrux

+0

你不需要兩種形式,因爲我am.pretty肯定有參加者和event_attendee之間的關係......這表明參加者屬於一個事件和一個事件has_one與會者(這只是一個假設)所以我是非常確定您可以使用single.form與'fields_for'並將兩個表單合併爲一個single.one ..在這裏查看https://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for以獲取更多詳細信息 –

回答

0

您可以用普通的HTML代替form_for幫手:

<%= form_tag(registration_path, method: "post") do %> 
    <input type="text" id="attendee[name]"> 
    <input type="text" id="event_attendee[attendee_id]"> 
    <input type="text" id="event_attendee[event_id]"> 
    <%= submit_tag('Submit form') %> 
<% end %> 

從你的控制器將會收到這些參數:

{ 
    attendee: { name: 'Alex' }, 
    event_attendee: { attendee_id: 20, event_id: 30 } 
} 

而這些參數你可以做任何你需要進一步的。