The partial name (sets/3/0) is not a valid Ruby identifier -
i trying render decently-complex series of partials in app , getting following error message:
the partial name (sets/3/1) not valid ruby identifier; make sure partial name starts underscore, , followed combination of letters, numbers , underscores. this partial rendered generators#show action, using following code:
<% @random_partial = 'sets/' + bucket.to_s + '/' + rand(2).round.to_s %> <%= render partial: @random_partial %> bucket number (between 1 , 7, not that matters) , random number choose random partial in bucket. file structure looks this:
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 finally, don't think impacts error being displayed, sample of 1 of sets partials looks like:
<% @random_cardio_1 = 'exercises/_cardio' + rand(2).round.to_s %> 5 minutes of <%= render partial: @random_cardio_1 %> <% @random_cardio_2 = 'exercises/_cardio' + rand(2).round.to_s %> 5 minutes of <%= render partial: @random_cardio_2 %> <% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %> 5 minutes of <%= render partial: @random_cardio_3 %> can else figure out why error being generated or how correct code?
i tested , found out can't have partial integer name yours in rails 4. there problems in code.
first, refer partial using relative directory after app/views. add generators/ @ start of path.
second, mentioned earlier can't use integer partial name, please rename partial else. example add p integer named partials. _1.html.erb renamed _p1.html.erb.
third, not add additional _ when referring partial. 'generators/sets/' + bucket.to_s + '/' + rand(2).round.to_s ok, <% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %> not ok.
so can render by,
<% @random_partial = 'generators/sets/' + bucket.to_s + '/p' + rand(2).round.to_s %> <%= render partial: @random_partial %> and nested partial remove _ before cardio
<% @random_cardio_3 = 'generators/exercises/cardio' + rand(2).round.to_s %> 5 minutes of <%= render partial: @random_cardio_3 %>
Comments
Post a Comment