部分名称 (sets/3/0) 不是有效的 Ruby 标识符
The partial name (sets/3/0) is not a valid Ruby identifier
我试图在我的应用程序中呈现一系列相当复杂的部分,但收到以下错误消息:
The partial name (sets/3/1) 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.
这部分是从我的 generators#show
操作中呈现的,使用以下代码:
<% @random_partial = 'sets/' + bucket.to_s + '/' + rand(2).round.to_s %>
<%= render partial: @random_partial %>
bucket
是一个数字(介于 1 和 7 之间,无关紧要),随机数是从 bucket
中的任何内容中选择一个随机部分。当前的文件结构如下所示:
generators
|--exercises
|--_cardio0.html.erb
|--_cardio1.html.erb
|--_weight0.html.erb
|--_weight1.html.erb
|--sets
|--1
|--_0.html.erb
|--_1.html.erb
|--2
|--_0.html.erb
|--_1.html.erb
|--3
|--_0.html.erb
|--_1.html.erb
|--4
|--_0.html.erb
|--_1.html.erb
|--5
|--_0.html.erb
|--_1.html.erb
|--6
|--_0.html.erb
|--_1.html.erb
|--7
|--_0.html.erb
|--_1.html.erb
|--new.html.erb
|--show.html.erb
最后,我认为这不会影响显示的错误,但这是 sets
部分之一的示例:
<% @random_cardio_1 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_1 %>
<% @random_cardio_2 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_2 %>
<% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_3 %>
其他人能弄清楚为什么会生成此错误或如何更正此代码吗?
我刚刚测试发现我们不能像你的那样有一个以整数作为名称的部分 Rails 4. 你的代码有一些问题。
首先,我们参考app/views
之后使用相对目录的部分。所以在路径的开头添加 generators/
。
其次,正如我之前提到的,您不能使用整数作为部分名称,请将您的部分重命名为其他名称。例如,我会将 p
添加到名为 partials 的整数中。所以 _1.html.erb
将重命名为 _p1.html.erb
.
第三,在引用你的部分时不要添加额外的_
。这个'generators/sets/' + bucket.to_s + '/' + rand(2).round.to_s
可以,但是这个<% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %>
不行。
所以你可以渲染它,
<% @random_partial = 'generators/sets/' + bucket.to_s + '/p' + rand(2).round.to_s %>
<%= render partial: @random_partial %>
并且对于 cardio
之前的嵌套部分删除 _
<% @random_cardio_3 = 'generators/exercises/cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_3 %>
我试图在我的应用程序中呈现一系列相当复杂的部分,但收到以下错误消息:
The partial name (sets/3/1) 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.
这部分是从我的 generators#show
操作中呈现的,使用以下代码:
<% @random_partial = 'sets/' + bucket.to_s + '/' + rand(2).round.to_s %>
<%= render partial: @random_partial %>
bucket
是一个数字(介于 1 和 7 之间,无关紧要),随机数是从 bucket
中的任何内容中选择一个随机部分。当前的文件结构如下所示:
generators
|--exercises
|--_cardio0.html.erb
|--_cardio1.html.erb
|--_weight0.html.erb
|--_weight1.html.erb
|--sets
|--1
|--_0.html.erb
|--_1.html.erb
|--2
|--_0.html.erb
|--_1.html.erb
|--3
|--_0.html.erb
|--_1.html.erb
|--4
|--_0.html.erb
|--_1.html.erb
|--5
|--_0.html.erb
|--_1.html.erb
|--6
|--_0.html.erb
|--_1.html.erb
|--7
|--_0.html.erb
|--_1.html.erb
|--new.html.erb
|--show.html.erb
最后,我认为这不会影响显示的错误,但这是 sets
部分之一的示例:
<% @random_cardio_1 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_1 %>
<% @random_cardio_2 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_2 %>
<% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_3 %>
其他人能弄清楚为什么会生成此错误或如何更正此代码吗?
我刚刚测试发现我们不能像你的那样有一个以整数作为名称的部分 Rails 4. 你的代码有一些问题。
首先,我们参考app/views
之后使用相对目录的部分。所以在路径的开头添加 generators/
。
其次,正如我之前提到的,您不能使用整数作为部分名称,请将您的部分重命名为其他名称。例如,我会将 p
添加到名为 partials 的整数中。所以 _1.html.erb
将重命名为 _p1.html.erb
.
第三,在引用你的部分时不要添加额外的_
。这个'generators/sets/' + bucket.to_s + '/' + rand(2).round.to_s
可以,但是这个<% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %>
不行。
所以你可以渲染它,
<% @random_partial = 'generators/sets/' + bucket.to_s + '/p' + rand(2).round.to_s %>
<%= render partial: @random_partial %>
并且对于 cardio
_
<% @random_cardio_3 = 'generators/exercises/cardio' + rand(2).round.to_s %>
Five Minutes of <%= render partial: @random_cardio_3 %>