Rails以DRY形式链接模型

时间:2014-02-10 01:55:46

标签: ruby-on-rails forms model associations dry

我正在尝试在我的应用中链接多个rails模型。我试图让用户使用表单创建产品评论。我正在尝试使用rails DRY原理。

我首先用蝙蝠namemodel yearimage做了一个蝙蝠桌。然后我创建了一个制造商表,其中仅列出了蝙蝠制造商的名称。我的蝙蝠模型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 %>

1 个答案:

答案 0 :(得分:0)

根据文件 http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

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

控制器内的