将变量添加到交互中

时间:2018-06-21 09:15:41

标签: ruby-on-rails ruby iterator

我想在局部变量中使用一个变量来更改迭代结果。为了说明这一点,让我们以一个更明确的例子为例。

我的变量为@cat = 2

我想运行此迭代:

Post.where(cat#{@cat}: true).each do |post|

女巫应该这样:

Post.where(cat2: true).each do |post|

但是我不知道该怎么办。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

在这种情况下,cat2不是“变量”,而是符号/字符串,这使它更容易实现。这样应该可以正常工作:

 Post.where("cat#{@cat}" => true).each do |post|

但是,在一般情况下,生成这样的变量名是一个非常糟糕的主意。这表明您可能为作业选择了错误的数据结构。

答案 1 :(得分:2)

您可以使用字符串插值来实现此目的。检查以下示例:

@variable = 'column'
Post.where("post_#{@variable}": true).each {|x| puts x.inspect}

答案 2 :(得分:1)

尝试此代码,欢迎提出建议

@cat = 2

Post.where(:"cat#{@cat}" => true).each do |post|
相关问题