【问题标题】:Ruby each loop x to variable substitutionRuby 每个循环 x 到变量替换
【发布时间】:2012-08-27 04:48:15
【问题描述】:
<% @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。谢谢!

【问题讨论】:

    标签: ruby variables loops each variable-substitution


    【解决方案1】:

    所以你正在寻找 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),因为它混合了演示文稿和代码(您不能将它们作为单独的部分。它有变得非常丑陋的趋势),它将您的视图与您最初拥有的一个用例结合起来(即使应该以相同的方式呈现,也不能在同一视图中呈现不同的数据)。考虑将此代码移至您的控制器(或什至其他负责管理此数据查询的对象中,让您的控制器仅负责处理请求。

    【讨论】:

    • 当然可以,但我需要 15 个代表点,但还没有。我是新来的。我愿意就如何更好地使用这个系统提出建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多