###前提・実現したいこと
Rails4でransackと、acts-as-taggable-onを使って、検索可能なデータベースサイトを作っています。
acts-as-taggable-onでタグ検索機能を実装したいのですがうまく動きません。
特定のmodelに対するeach do..endのループ内にて、タグリストへのリンクを取り出すことはできますが、
タグ個別のリンクを実装したいのです。
###発生している問題・エラーメッセージ
タグクラウド内では
タグ1=>タグ1の付加されたデータ一覧へのリンク
タグ2=>タグ2の付加されたデータ一覧へのリンク
といったリンク付はできています。
ただ、あるモデルに対してeach do ... end文を仕掛けて、
その中で取り出された各々個別のデータに付与されているタグを
表示させる機能を実現しようとすると上手くいきません。
具体的には、個別のデータに対してタグ1、タグ2と複数のタグが付けられている場合、
「タグ1かつタグ2」というtag_listへのリンクは作れるのですが、
「タグ1のみ」、「タグ2のみ」へのリンクが作れないのです。
それは、:teg_listという:nameを取得することはできる一方で、モデルと結びついた状態でタグクラウド内のように個別のtag.nameによる取得する方法がわからないからだと思うのですが…。
###ソースコード
#index.html.erb <% tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class| %> <%= link_to tag.name, { :action => :tag, :name => tag.name }, :class => css_class %> <% end %>
このように記述すると、タグクラウド内での個別のタグへのリンクが作れます…。
しかし、以下のような部分の記述の場合、tag_cloudというヘルパー?で@tagsモデルを呼び出さない部分では、
:nameの指定をするときに、あるdogに付加されているtag_listという属性は呼び出せるのですが、個別にtag.nameのように呼び出すことができません。
<% @models.each do |dog| %> <% dog.tag_list.each do |tag| %> <%= link_to tag, { :action => :tag, :name => dog.tag_list } %> #ここを:tag_listのようにせず、@dogのtag.nameのように取得する方法が不明です。 <% end %> <% end %>
コントローラーは以下のように記述しています。
def index @search = Dog.search(params[:q]) @models = @search.result.paginate(:page => params[:page], :per_page => 8).order("popularity") @tags = Dog.tag_counts_on(:tags).order('count DESC') end
ご指導宜しくお願いします。
###補足情報(言語/FW/ツール等のバージョンなど)
rails 4.2
ruby 2.2.2
mySQL
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/12 13:38
2015/12/12 14:06