0
<% @parts.each do|x| %>


<% @bbb = Relation.where(part: "#{x}") %>
<%= **@"#{x}"** = @bbb.collect {|x| x.car} %>

<% end %>

我正在尝试将第 3 行中的变量设置为 x 部分值 @"#{x}"。我找不到正确的语法。我知道 send(x) 和 x.to_sym。但我需要知道如何将每个循环中的 x 设置为带有 @ 的 @variable。谢谢!

4

1 回答 1

2

所以你正在寻找 instance_variable_set

instance_variable_set "@#{x}", @bbb.collect { |x| x.car }

但这可能不是处理此问题的最佳方法。没有看到使用它的代码,很难说,但也许考虑将结果放入哈希中:result[x] = @bbb.collect { |x| x.car }

另请注意,"#{x}"x.to_s

此外,最好避免直接在视图中查询模型(假设您在这里使用 Rails,因为您似乎在使用 ActiveRecord),因为它将演示与代码混合在一起(您不能将它们作为单独的部分。它有一个变得非常丑陋的趋势),它将您的视图与您最初拥有的一个用例结合起来(即使应该以相同的方式呈现,也不能在同一视图中呈现不同的数据)。考虑将此代码移动到您的控制器(甚至是其他负责管理此数据查询的对象中,让您的控制器职责仅处理请求。

于 2012-09-01T20:42:22.080 回答