Rails与构建关联的奇怪行为

时间:2017-04-04 18:03:40

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个属于品牌的产品型号

Model product
belongs_to :brand

model Brand 
has_one :product

关于产品创建我在创作上放置一个精选品牌

    <%=  p.collection_select(:brand_id, Brand.all, :id, :name, {},{ :multiple => false}) %>

但是如果用户想要添加他的品牌,我添加了一个文本字段

 <%= p.fields_for  :brand_attributes  do |b| %>

  <%=b.text_field :name, :label=>"Name"%>
<% end %>

现在,如果用户选择品牌,则选择未在产品展示页面上显示 只要用户添加品牌名称

那么,是否可以保留一个精选品牌,并且可以添加品牌名称?

1 个答案:

答案 0 :(得分:1)

这是可能的,但您需要在控制器方法中添加一些额外的逻辑以满足任一情况。您已经发布了最少的代码,因此如果您显示表单发布的控制器方法,它会有所帮助。

你确定关系应该是has_one吗?从您的表单和您显示所有品牌的事实,允许用户选择可能已经被选择用于另一个产品的品牌,这可以解释为什么该品牌没有出现在展示页面上。您可能需要has_many关系。