我有Products
模型has_many :tags
。
标签是在产品创建时创建的。
当我更新产品时,我可以更新所有属性,包括标签的属性。
但我的问题是,如何在产品更新表单上更新产品时删除标记或创建另一个标记?
我是否必须创建单独的标签表格或类似的东西?
以下是我的更新产品表单:
<%= form_for(@product), id: 'edit_form' do |f| %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :location %><br>
<%= f.text_field :location %>
</div>
<div class="field">
<%= f.label :price %><br>
<%= f.text_field :price %>
</div>
<%= f.fields_for :tags do |t| %>
<div class="field">
<%= t.label "Hashtag" %>
<%= t.text_field :name %>
</div>
<% end %>
<div class="actions">
<%= f.submit "Update this item" %>
</div>
<% end %>
答案 0 :(得分:0)
我认为使用gem 'nested_form'
会很容易。您可以获取存储库here
答案 1 :(得分:0)
如何为同一个产品添加同名的标签?
我认为您taggings
的数据库架构错误,现在您在代码product_id
中使用table
,这意味着tag
仅适用于product
一个products
,但是您不希望按tag
或count
对products
tag
对特定products
标记的tag
进行排序,或者可以搜索tag
= zzz的所有taggings
。等。
您需要product
模型,has_many :taggings
has_many :products, through: :taggings
模型和has_many :taggings
has_many :tags, through: :taggings
模型。
<强> tag.rb 强>
belongs_to :tag
belongs_to :product
<强> product.rb 强>
{{1}}
<强> taggings.rb 强>
{{1}}
通过此关系,您可以在将来按标签进行排序,搜索和计数。
完整教程:http://railscasts.com/episodes/382-tagging?view=asciicast 选择“从头开始”部分
p.s。建议不要删除标记,因为此标记可能会被其他产品使用。您可以稍后使用rake任务删除没有任何产品的标签。