从一个具有不同属性值的表单创建一个模型的多个对象

时间:2013-12-22 00:47:04

标签: ruby-on-rails ruby variables

我需要一次在一个表单中创建两个相似的对象。但是这个对象(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>

0 个答案:

没有答案