0

我试图将我的参数中的一个简单变量传递给一个类方法,但它似乎不起作用。这似乎很初级,但我仍在学习。有人可以解释为什么这不起作用并提供替代方案吗?我的代码如下。

控制器

@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)

您不想要参数部分,或者您正在尝试做一些应该重构的疯狂事情:)

于 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 回答