我花了很多时间在这个上,现在我被卡住了。我目前正在尝试在我的应用程序中设置标记系统。我相信我所有的联想都是正确的,但是我的观点有问题。这些标签是使用它们自己的形式创建的。我想要做的是当用户创建一个新项目时,他们将能够从他们从标签表单创建的标签列表中进行选择。
这是我的模型:
class Item < ActiveRecord::Base
attr_accessible :title, :media, :tag_ids
belongs_to :user
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings
end
class Tag < ActiveRecord::Base
attr_accessible :name
belongs_to :user
has_many :taggings, :dependent => :destroy
has_many :items, :through => :taggings
end
以下是我知道有缺陷的观点。物品形式:
<%= form_for @item, :html => { :multipart => true } do |f| %>
<div class="field">
<%= f.file_field :media %>
<%= f.text_field :title, placeholder: "Add title..." %>
<% @tags.each do |tag| %>
<div>
<%= check_box_tag "item[tag_ids][]", tag.id, @item.tags.include?(tag) %>
<%= tag.name %>
</div>
<% end %>
</div>
显示项目视图:
<li>
<span class="title"><%= item.title %></span>
<%= image_tag item.media.url(:small) %>
<span>
<% @item.tags.each do |tag| %>
<% tag.name %>
<% end %>
</span>
<span class="timestamp">
Posted <%= time_ago_in_words(item.created_at) %> ago.
</span>
<%= link_to "delete", item, method: :delete, confirm: "You sure?", title: item.title %>
</li>
正在创建标签,并且项目和标签都已正确附加到我的标签数据库中。但是,我需要两件事的帮助:
- 如何更改 check_box_tag 以仅显示当前用户创建的标签(我正在使用设计)?
- 为什么项目视图中没有标签显示?
我也是 Rails 的新手,想学习如何在没有插件的情况下做到这一点。