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