5439


erbの`<% %>`内部に変数を数値として使う方法がわかりません。

[code]

    <% <% @@num %>.times do |y| %>
    <%= y %>
    <% end %>
    
[/code]

といったかたちを考えているのですが、エラーになります。

本家の[Using erb inside erb at Ruby on
Rails](https://stackoverflow.com/questions/16342828/using-erb-inside-erb-at-
ruby-on-rails)では、

[code]

    <% title "Edit <%= resource_name.to_s.humanize %>" %>
    
[/code]

に対する回答として

[code]

    <% title "Edit #{resource_name.to_s.humanize}" %>
    
[/code]

が挙げられていたので、`.to_i`を付けて試したのですが、うまく行きませんでした。

この場合、どのようにすればよいのでしょうか。

追記:  
回答ありがとうございます。  
教えていただいた方法を試したところ、うまく行きました。

Railsではなく、Sinatraを使用しています（自動でRailsタグがついていたようなので削りました。）。

`#{@@tnum}`の場合

[code]

    "Internal Server Error" "undefined method `join' for #<String:0x5472318>"
    
[/code]

`<% @@num %>`の場合

[code]

    "Internal Server Error" "undefined method `join' for #<String:0x526cab8>"
    
[/code]


CC BY-SA 3.0
2015-01-27T13:11:36.430
5434
2015-01-29T00:51:47.020
2017-05-23T12:38:56.083
-1
7870
question
erb sinatra
erbの <% %>内で変数を使う場合


`<% %>`の中はrubyのコード片ですので、その中に`<% %>`が出てくることは普通はありません。rubyのコードとして素直に書けばよいので、

[code]

    <% @@num.times do |y| %>
      <%= y %>
    <% end %>
    
[/code]

となります。

ただし、おそらくこれでも動かないと思います。Railsだと想像しますが、コントローラで`@@num`というクラス変数を定義してもビューでは参照できません。コントローラからビューにデータを受け渡すにはインスタンス変数を使用しますので普通の使い方なら`@num`のはずです。

(追記)sinatraであればクラス変数でも動くようですが、普通の使い方でないのは変わらないので、インスタンス変数を使った方がよいと思います。


CC BY-SA 3.0
2015-01-27T13:55:54.183
5439
2015-01-28T01:31:05.270
2015-01-28T01:31:05.270
5793
5793
5434
answer