动态部分名称使用slim和Rails 4&获取部分名称是无效的Ruby标识符错误

时间:2015-08-06 19:01:26

标签: ruby-on-rails dynamic partials slim-lang

我正在构建一个Rails 4博客应用程序并使用Slim。 我正在尝试使用Post表中的'img_style'列动态设置部分名称。这将根据不同的枚举“图像样式”调用不同的部分。

查看

= render = 'img_style_{#@post.img_style}'

这应该产生相当于:

= render = 'img_style_1'

我希望能够渲染我的部分名为'_ img_style_1.html.slim'

现在,使用我的代码,它只是在屏幕上呈现此错误:

There is an Error: The partial name (img_style_{#@post.img_style}) is not a valid Ruby identifier; make sure your partial name starts with underscore, and is followed by any combination of letters, numbers and underscores.

1 个答案:

答案 0 :(得分:2)

使用单引号(String)定义的Ruby ''不允许表达式替换。您需要使用双引号(""),并使用正确的替换语法(#之前{):

"img_style_#{@post.img_style}"

ETA 相关地,也许您已经完成了这项工作,但我确保img_style仅包含使用验证定义部分的值,例如:

validates_inclusion_of :img_style, in: [1,2,3]