为什么我的视图变量不在括号内插值?

Rem*_*min 1 ruby views ruby-on-rails

我在我的Rails视图/ comments/_comments部分中有这个代码:

 <%= render :partial => 'comments/#{@type}' %>
Run Code Online (Sandbox Code Playgroud)

此外,我@type通过本地传递变量,但我得到:

Missing partial comments/#{@type}
Run Code Online (Sandbox Code Playgroud)

如果我用以下内容替换它,它可以工作:

<%= render :partial => 'comments/post' %>
Run Code Online (Sandbox Code Playgroud)

所以@type不在我的观点中评估.

有人可以解释一下吗?

Mar*_*pka 9

Ruby中的字符串插值仅适用于使用双引号(")定义的字符串.所以这应该有效:

<%= render :partial => "comments/#{@type}" %>
Run Code Online (Sandbox Code Playgroud)

或者,如果要插入实例变量的值,则适用的简写:

<%= render :partial => "comments/#@type" %>
Run Code Online (Sandbox Code Playgroud)

  • +1 @MarekLipka.太多人试图学习Rails而不花时间学习Ruby,因此,无法弄清楚如何做Ruby中基本的简单事情.一旦我们了解了Ruby,Rails很有意义. (3认同)
  • 这不是Rails问题,它是Ruby的工作方式,以及许多其他语言.单引号分隔线是固定的,不允许插值变量.双引号分隔线允许插值. (2认同)