2016-11-05 79 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

相關問題