2011-12-09 14 views
1

私はRailsのブログをかなりうまくいきました。しかし、自分のタグ内の記事を自分のページ内に表示することはできません(たとえば、そのリンクがクリックされたときにArts & Entertainmentというタグが付いた記事のみが表示されます)。タグで投稿を表示 - Ruby on Railsブログ

私は足場モデルの列にタグを付けることができます。それは文字列を取ります。したがって

1)特定のタグのみにアクセスするにはどうすればよいですか?私は次のようなものを試しました:

def self.sports 
    find(:all, :tags => 'gainmuscle') 
end 

を利用できません。

2)ビューに表示するにはどうすればよいですか?

ご協力いただければ幸いです。あなたはおそらくあなたのコントローラ内でこれに似たようなメソッドを定義することができます

答えて

1

:ここtagged

def self.tagged_with 
    @articles = Article.tagged(params[:tag]).paginate(default_paginate_options) 
end 

namedscopeです。それを無視することができますが、アクションは:paramとして選択されたタグでタグ付けされたすべての記事を生成します。タグは、この場合のモデル記事の属性です。

+0

どのように私はビューに記事を表示することができますか(例えばスポーツ記事ビュー、そのビュー内の記事は全てスポーツタグ付きです(ユーザー入力文字列)。 – TopChef

+0

@TopChef:ユーザー入力を取得します:paramsを使用してコントローラ内でこれと同様のメソッドを記述して、ユーザが与えたタグにタグ付けされたすべての記事を取得します。 –

1

1)ここでは、モデル内のスコープを使用することができます。

class YourModel < ActiveRecord::Base 

    scope :by_tag, lambda{|tag| where(:tag => tag)} 

    ... 
end 

そして、コントローラで:

@collection = YourModel.by_tag("gainmuscle") 

2)私は最善の方法は、HTMLで部分的に作成することであると言うでしょう1つのポストのためのコード、およびそれをこのようにレンダリング:

render :partial => 'post', :collection => @collection 

(あなたがここでパーシャルの使用状況を確認することができます:を)

+1

OPはまだレール2.xにあります - 'scope'メソッドが導入されました3.0で私は考える(前にnamedscope)。 – tmaximini

0

もう1つのアプローチを述べてください。この正確な目的にはかなりの宝石があります。 Thisは興味深いかもしれませんが、個人的にはacts_as_taggable_onに投票できます。これにより、後で便利になる可能性のある非常に多くのオプションが提供されます。

関連する問題