2016-11-05 80 views
1

我试图呈现一个体面 - 一系列复杂在我的应用泛音和正在以下错误信息:局部名称(套/ 3/0)是不是一个有效的Ruby标识符

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. 

这在bucket

<% @random_partial = 'sets/' + bucket.to_s + '/' + rand(2).round.to_s %> 
<%= render partial: @random_partial %> 

bucket是一个数字(与7之间1,而不是该事项)和随机数是选择一个随机的部分从什么:部分是从我generators#show动作呈现,使用下面的代码。文件结构目前看起来是这样的:

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 %> 

其他人能找出为什么这个错误正在产生或如何纠正这个代码?

+0

什么版本是轨道前的嵌套部分删除_? – jamesjaya

回答

2

我刚刚测试过,发现我们不能在整个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 %> 
+0

谢谢!这真的是非常棒的信息,并且非常完美。 – Liz

相关问题