我正在尝试在我的应用中链接多个rails模型。我试图让用户使用表单创建产品评论。我正在尝试使用rails DRY原理。
我首先用蝙蝠name
,model year
和image
做了一个蝙蝠桌。然后我创建了一个制造商表,其中仅列出了蝙蝠制造商的名称。我的蝙蝠模型belongs_to :manufacturer
和我的制造商模型has_many :bats
。
不是使用manufacturer
创建多个表,(每个蝙蝠至少列出3次制造商的名称),如何将我的两个模型链接在一起?
我的表单已提交给review
模型。在表单中我已经有<%= f.collection_select :bat_id, Manufacturer.all, :id, :manufacturer, include_blank: true %>
,其中列出了下拉菜单中的所有可能的制造商。 HOWEVER ,提交时,审核表单中的:bat_id
参数均未提交。
- 一种猜测是将蝙蝠模型中存储的manufacturer_id
整数作为manufacturer_id
列下的整数(注意:已经这样做了,但我不知道如何提交在一种形式?)
- 另一个猜测是让bat模型继承制造商模型
非常感谢任何帮助
我的完整表格:
<%= form_for(@review) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field" align= "center">
<h3>Select bat</h3>
<%= f.collection_select :bat_id, Manufacturer.all, :id, :manufacturer, include_blank: true %>
<h3>What do you like about this bat?</h3>
<%= f.text_area :pros, placeholder: "Enter what you like..." %>
<h3>What do you not like about this bat?</h3>
<%= f.text_area :cons, placeholder: "Enter what you don't like..." %></br>
</div>
<div align="center">
<%= f.submit "Add Review", class: "btn btn-large btn-info" %>
</div>
<% end %>
答案 0 :(得分:0)
collection_select中的参数应该是:
f.collection_select(:post,:author_id,Author.all,:id, :name_with_initial,prompt:true)
其中post是Model,author_id是属性
或者您可以尝试使用:
= f.select(:bat_id,options_from_collection_for_select(@manufacturers,“id”,“manufacturer”, f.object。 BAT_ID),{})
然后把
控制器内的@manufacturers = Manufacturer.all