按名称调用局部变量而不使用eval

时间:2015-01-29 15:39:04

标签: ruby-on-rails ruby

我在查看视图中按名称调用局部变量时遇到问题。我使用locals从其他视图渲染这部分代码:

{ url: @event_url, size: 1, style: 1 }


- style_default = { col_md: 12, col_sm: 12}
- style_1 = { col_md: 3, col_sm: 4}
- style_2 = { ... }

我想调用变量style_X,具体取决于渲染期间给出的局部变量style。我尝试了三种方法来解决这个问题:

  • 使用eval
  • 使用instance_variable_get
  • 使用了大量if条件

但我认为它们还不够好。是否有任何可以通过名称调用局部变量的解决方案或方法?

2 个答案:

答案 0 :(得分:1)

Binding#local_variable_get用于获取局部变量的值。

答案 1 :(得分:0)

使用此本地人:{ url: @event_url, size: 1, style: "style_#{style}" }
或者使用类似send(:style)

之类的内容