2016-11-05 9 views
1

ではありません(/ 3/0が設定されます)名前の一部は、私は私のアプリでパーシャルのちゃんと-複雑な一連のレンダリングしようとしていると、次のエラーメッセージを取得しています有効なRubyの識別子

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

bucket(それは重要なこと1と7の間に、ではない)の数で、乱数が、その中に何からランダムな部分を選択することですbucket:部分は、次のコードを使用して、私の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パーシャルの1がどのように見えるかのサンプルです:

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

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

とネストされた部分削除_ためには、あなたのレールのですか? – jamesjaya

答えて

2

私はちょうどテストしたところ、Rails 4では、あなたの名前として整数で部分的に使うことができないことを知りました。コードにいくつかの問題があります。

まず、app/viewsの後に相対ディレクトリを使用してパーシャルを参照します。したがって、パスの先頭にgenerators/を追加してください。

第2に、前に説明したように、部分名として整数を使用できないため、部分名を別の名前に変更してください。たとえば、partialsという名前の整数にpを追加します。したがって、_1.html.erbの名前は_p1.html.erbに変更されます。

第3に、部分的に言及するときは_を追加しないでください。この'generators/sets/' + bucket.to_s + '/' + rand(2).round.to_sはOKですが、これは<% @random_cardio_3 = 'exercises/_cardio' + rand(2).round.to_s %>ではありません。

だから、あなたがすることによって、それをレンダリングすることができ、どのようなバージョンcardio

<% @random_cardio_3 = 'generators/exercises/cardio' + rand(2).round.to_s %> 
Five Minutes of <%= render partial: @random_cardio_3 %> 
+0

ありがとう!これは本当に素晴らしい情報であり、完璧に機能しました。 – Liz

関連する問題