2016-04-22 13 views
0

と部分的にレンダリングしますレール4:私は部分的に、次のしている変数

<tr class="profile-row"> 
    <td class="profile-header"><%= attribute %></td> 
    <% for week in @weeks %> 
    <td><%= week.<%= field %> %></td> <!-- where it fails --> 
    <% end %> 
</tr> 

...と私は2つの変数、attributefieldを供給できるようにしたいと思います。私は次のように部分的にレンダリングしようとすると:

<tr class="profile-row"> 
    <td class="profile-header">Current Weight</td> 
    <% for week in @weeks %> 
    <td><%= week.current_weight %></td> <!-- where it fails --> 
    <% end %> 
</tr> 

...しかし、これはsyntax error, unexpected tOP_ASGN...で失敗します。

<%= render 'foo', attribute: 'Current Weight', field: 'current_weight' %> 

を...私が欲しいです。私はこれが変数を提供する正しい方法ではないことを理解していますが、どのようにすればいいですか?

<%= week.<%= field %> %> 

代わりにこの操作を行います:あなたはこのようなネストERBタグはできません

答えて

3

あなたはERBタグ内に置くものは何でも

<%= week %>.<%= field %> 

はルビーです。あなたのコードは「Rubyコードweek.<%= fieldを実行して結果をここに貼り付けている」と言っています。しかし、それは有効なRuby構文ではありません。

それともfieldは、属性の名前が含まれている場合、あなたはこれを行うことができます:

<%= week.send field.to_sym %> 
0

あなたはネストできませんERBタグ。 変数が文字列の場合は、変数を連結できます。

<%= week + "." + field%> 

それがスローした場合、エラーがこの

<%= week.to_s + "." + field.to_s%> 
を試してみてください
関連する問題