2016-11-05 3 views
1

Я пытаюсь сделать прилично сложный ряд обертонов в мое приложение, и я получаю следующее сообщение об ошибке:Частичное имя (наборы/3/0) не является допустимым рубин идентификатор

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

Может ли кто-нибудь еще понять, почему эта ошибка генерируется или как исправить этот код?

+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

 Смежные вопросы

  • Нет связанных вопросов^_^