Rails:动态命名实例变量

时间:2012-11-28 03:01:29

标签: ruby-on-rails-3 loops

只是想知道如何动态命名(例如,在循环中)一系列实例变量。像这样:

<% @current_issue.articles.each_with_index do |a, i| %>
  <% i += 1 %>
  <%= f.collection_select("article#{i}", @articles_hash1, :first, :last) %>
  <% @articles1.each do |r| %>
    <%= link_to(image_tag(r.image.url(:large)), r.image.url(:large), :id => 'article'+i.to_s+'_thumb'+r.id.to_s) %>
  <% end %>
<% end %>

而不是@articles_hash1而是@articles_hash[i]。我只是不确定如何实现这一点。

干杯!

2 个答案:

答案 0 :(得分:0)

<% @current_issue.articles.each_with_index do |a, i| %>
  <%= f.collection_select("article#{i}", @articles_hash[i], :first, :last) %>
  <% @articles_hash[i].each do |r| %>
    <%= link_to(image_tag(r.image.url(:large)), r.image.url(:large), :id => 'article'+i.to_s+'_thumb'+r.id.to_s) %>
  <% end %>
<% end %>

我没有检查任何语法问题,但这应该做。

答案 1 :(得分:0)

对于任何挣扎于此的人,请帮自己一个忙,并建立一个有问题的实例变量数组,即:

@articles = (1..3).to_a.map { |i| Article.all_articles(i).reverse }

然后遍历该数组,即:

<% @articles.each_with_index do |a, i| %>
  <% i += 1 %>
  <%= f.collection_select("article#{i}", @articles[i-1], :id, :name) %>
<% end %>