私はこれに多くの時間を費やしました、そして今私は立ち往生しています。現在、アプリでタグ付けシステムをセットアップしようとしています。私の協会はすべて正しいと思いますが、私の見解に問題があります。タグは独自のフォームを使用して作成されています。私がやりたいのは、ユーザーが新しいアイテムを作成するときに、タグフォームから作成したタグのリストから選択できるようにすることです。
これが私のモデルです:
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>
タグが作成され、アイテムとタグの両方がタグ付けデータベースに適切に添付されています。ただし、次の2つの点でサポートが必要です。
- 現在のユーザー(私はDeviseを使用しています)によって作成されたタグのみを表示するようにcheck_box_tagを変更するにはどうすればよいですか?
- アイテムビューにタグが表示されないのはなぜですか?
Railsも初めてで、プラグインなしでこれを行う方法を学びたいと思っています。