2017-09-01 161 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 } 
} 

而这些参数你可以做任何你需要进一步的。