我需要一次在一个表单中创建两个相似的对象。但是这个对象(aviaslers)应该用不同的html框架。对象是aviasaler_there(一方卖票的aviasaker)和aviasaler_back(背面卖票的aviasaker)我试图找出如何生成两个对象而不是创建类似的模型。
我的尝试看起来像这段代码。但它不起作用。请帮助我了解如何重新使用这种方法,并且不要制作两个相似的模型。
trips_controller.rb
class TripsController < ApplicationController
def new
@trip = Trip.new
aviasaler_there = @trip.aviasalers.build
avisaler_back = @trip.aviasalers.build
end
def create
@trip = current_user.trips.build(params[:trip])
if @trip.save
flash[:success] = "Trip created!"
redirect_to root_url
else
render 'new'
end
end
end
new.html.erb
<% provide(:title, 'Create a trip') %>
<h1>Creat a trip</h1>
<div class="trips">
<%= form_for(@trip) do |f| %>
<%= render 'fields', f: f %>
<p>flight there</p>
<%= form_for(@avisaler_there) do |builder| %>
<%= render 'salers_fields', f: builder %>
<% end %>
<p>flight back</p>
<%= form_for(@avisaler_back) do |builder| %>
<%= render 'salers_fields', f: builder %>
<% end %>
<%= f.submit "Create" %>
<% end %>
show.html.erb
<p>flight there</p>
<ol>
<% for @avisaler_there in @trip.aviasalers %>
<li><%= @avisaler_there.name %></li>
<li><%= @avisaler_there.quantity %></li>
<% end %>
</ol>
<p>flight back</p>
<ol>
<% for @avisaler_back in @trip.aviasalers %>
<li><%= @avisaler_back.name %></li>
<li><%= @avisaler_back.quantity %></li>
<% end %>
</ol>