0

我有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 %>
4

2 回答 2

0

I think it will be easy by using gem 'nested_form'. You can get the repository here

于 2013-07-31T13:37:58.590 回答
0

以及如何将具有相同名称的标签添加到另一个产品?

我认为你有一个错误的数据库模式taggings,现在你product_id在标签中使用table,这意味着 atag只能用于一个product,但你不想排序你productstagcount有多少products被特定标记tag,或者可能搜索所有products在哪里tag是 = zzz。ETC..

你需要tag模型,taggings模型和product模型,你已经有了。

标签.rb

has_many :taggings
has_many :products, through: :taggings

产品.rb

has_many :taggings
has_many :tags, through: :taggings

标记.rb

belongs_to :tag
belongs_to :product

通过这种关系,您将来可以按标签进行排序、搜索和计数。

完整教程:http ://railscasts.com/episodes/382-tagging?view= asciicast 与“从头开始部分”一起使用

ps不建议删除标签,因为此标签可能会被其他产品使用。您可以稍后通过 rake 任务删除没有任何产品的标签。

于 2013-07-31T13:49:32.630 回答