0

これは私の家のモデルです

has_many :taggings
has_many :tags, through: :taggings

def self.tagged_with(name)
    Tag.find_by_name!(name).houses
 end

end

これは私の家のコントローラーです

    def index
        if params[:tag]
          @houses = House.tagged_with(params[:tag])
    end
end

見る:

- @houses.each do |house|
ect

これは問題なく動作します... /house/tag/tagname のように、現在のタグを持つ家を除外します

しかし、ネストされたリソースを実装したので、ビューをこれに変更する必要があります。

- @regions.each do |region|
      - region.houses.find_all do |house|

新しいビューでフィルタ タグを使用するにはどうすればよいですか? こう思った

- @regions.each do |region|
      - region.houses.find_tagged_with(params[:tags]) do |house|

しかし、これはうまくいきません...助けてください。

4

2 に答える 2

0

tagged_with がクラス House で定義されており、インスタンスまたはコレクションで呼び出すことができないため、これは機能しません。region.houses は配列であるため (地域に多くの家があると仮定)、それでは機能しません。これを行う 1 つの方法は、ActiveRecord::Relation を使用することです。

@regions.each do |region|
 - region.houses.where(:name => params[:tag).each do |house|

詳細については、Railsガイドを参照してください...

于 2013-04-23T06:09:51.627 に答える