0

paramsの単純な変数をクラスメソッドに渡そうとしていますが、機能していないようです。これは初歩的なようですが、私はまだ学んでいます。誰かがこれが機能しない理由を説明し、代替手段を提供できますか?私のコードは以下の通りです。

コントローラ

@profile = current_user.profile
@dogs = Dog.by_profile(params[@profile])

モデル

def self.by_profile(profile)
   Dog.where(kids_under_10: profile.kids_under_10 )
end

*注:profile.kids_under_10ブール値です。手動でtrueまたはfalseに置き換えると、すべて正常に機能します。

4

3 に答える 3

4

paramsは、URLパラメータを含む特別なRailsハッシュです。したがって、コードは、ユーザープロファイルの文字列バージョンを含むリクエストで渡されるurlパラメータを探しています。これは間違いなくあなたがやりたいことではありません。

Railsモデルメソッドを呼び出すときは、他のメソッドと同じように引数を使用して呼び出します。Dog.by_profile(@profile)

paramsの部分が必要ないか、リファクタリングする必要のあるクレイジーなことをしようとしています:)

于 2012-12-12T00:52:01.330 に答える
0

のキー値paramsは次のようになりますparams[:profile]

だから試してみてください@dogs = Dog.by_profile(params[:profile])

于 2012-12-12T00:52:01.837 に答える
0

paramsはリクエストからのハッシュだからです。あなたがしているのは、間違っているインスタンス変数でハッシュを検索しようとしていることです。

私はあなたが意味したのはやることparams[:profile]、または単に@profileだと思います

于 2012-12-12T00:52:29.283 に答える