Ruby on rails 从一个具有不同属性的窗体创建一个模型的多个对象';价值观

Ruby on rails 从一个具有不同属性的窗体创建一个模型的多个对象';价值观,ruby-on-rails,ruby,variables,Ruby On Rails,Ruby,Variables,我需要一次以一种形式创建两个相似的对象。但是这个对象(aviaslers)应该用不同的html来构建。对象是aviasaler_(一边卖票的aviasaker)和aviasaler_(背面卖票的aviasaker)。我试图找出如何生成两个对象,而不是创建类似的模型 我的尝试看起来像以下代码。但它不起作用。请帮助我了解如何重新调整这种方法,不要制作两个类似的模型 跳闸控制器.rb class TripsController < ApplicationController def new

我需要一次以一种形式创建两个相似的对象。但是这个对象(aviaslers)应该用不同的html来构建。对象是aviasaler_(一边卖票的aviasaker)和aviasaler_(背面卖票的aviasaker)。我试图找出如何生成两个对象,而不是创建类似的模型

我的尝试看起来像以下代码。但它不起作用。请帮助我了解如何重新调整这种方法,不要制作两个类似的模型

跳闸控制器.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
<% 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 %>
<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>
class TripsController
new.html.erb

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

创造一次旅行
飞往那里

返航

show.html.erb

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
<% 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 %>
<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>
去那里的航班

  • 返航


  • 你如何区分那里的
    avisaler\u
    和后面的
    avisaler\u
    ?如果您不是,那么您可能应该。可能是布尔型,或者最好是引入另一个表
    avisaler\u类型
    ,您可以从
    avisaler
    模型中引用该表。另请参见@swapnilabnave,感谢您的回复。例如,我可以将布尔类型的“:back”属性添加到avisaler。如何在新操作中创建两个表单,其中第一个表单应使用属性(back:false)创建avisaler,第二个表单应使用属性(back:true)创建avisaler?