Ruby on rails 3 Rails:动态命名实例变量
只是想知道如何动态命名(比如在循环中)一系列实例变量。大概是这样的:Ruby on rails 3 Rails:动态命名实例变量,ruby-on-rails-3,loops,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| %> <%= li
<% @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 %>
“物品”+i.to_s+“U拇指”+r.id.to_s)%>
这里不是@articles\u hash 1
,而是@articles\u hash[i]
。我只是不知道如何才能做到这一点
干杯
<% @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 %>
“物品”+i.to_s+“U拇指”+r.id.to_s)%>
我并没有检查任何语法问题,但这应该可以解决。对于有困难的人,请帮自己一个忙,构建一个有问题的实例变量数组,即:
@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 %>
是的,我试过了。它向我抛出了以下错误:未定义nil:NilClass的方法“[]”。我的错误@文章散列必须首先存在。您是如何访问它的?它是:我让控制器生成@articles\u hash1
,@articles\u hash2
,和@articles\u hash3
。当我运行我发布的原始代码时,它工作正常(但显然不正确)。那么@articles\u hash 1
是散列吗?是的,我不是在一个名为@articles\u hash
的散列中访问键和值,我是在访问上面提到的三个不同的散列。对不起,我应该说得更清楚些。