如何从Ruby on Rails中的字符串值创建变量名?

B S*_*ven 27 ruby instance-variables

我想在控件中创建一个实例变量,以便在视图中使用:

foo = "bar"
instance_variable_set("#{foo}", "cornholio")
Run Code Online (Sandbox Code Playgroud)

在视图中,使用@bar以便:

@bar => "cornholio"
Run Code Online (Sandbox Code Playgroud)

这会产生错误: 'bar' is not allowed as an instance variable name

在Rails中工作3.1

Sco*_*hea 38

instance_variable_set("#{foo}", "cornholio")需要阅读instance_variable_set("@#{foo}", "cornholio")

基于这篇文章.刚刚在我的irb中尝试过Ruby 1.93; 这篇文章是2009年的.


Jör*_*tag 7

在Ruby中,实例变量名称始终必须以@sigil 开头.

  • +1术语!有趣的是,http://en.wikipedia.org/wiki/Sigil_%28magic%29在谷歌搜索时出现在http://en.wikipedia.org/wiki/Sigil_%28computer_programming%29之前. (2认同)
  • 这就是为什么人们会想到像instance_variable_set这样的方法会考虑添加“ @”的原因。 (2认同)