gpt4 book ai didi

ruby-on-rails - 在模板中循环

转载 作者:行者123 更新时间:2023-12-04 04:06:59 25 4
gpt4 key购买 nike

我的模板看起来像:

  <h2>Oracle</h2>

<% @q_oracle.each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>

<% end %>


<h2>Ruby and Rails</h2>

<% @q_ruby.each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>

<% end %>

因此模板包含静态标题 (h2) 并循环遍历数组。我正在寻找避免在我的模板中复制粘贴代码的方法。就像是:
@hash = { 'Oracle' => @q_oracle, 'Ruby and Rails' => @q_ruby }

@hash.each { |@t, @a|

<h2>@t</h2>

<% @a.each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>

<% end %>
}

是否可以?

最佳答案

是的,你可以做到。

Ruby 1.9 解决方案

在 Ruby 1.8 中,当标题顺序无关紧要时,可以使用此解决方案。在 Ruby 1.9 中,标题会按照它们插入哈希的顺序出现。

只需将此变量放置到您的 Controller 操作中即可:

@hash = { 'Oracle' => @q_oracle, 'Ruby and Rails' => @q_ruby }

并从您的 View 访问此变量:
<% @hash.each do |t, a| %>
<h2><%= t %></h2>
<% a.each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>
<% end %>
<% end %>

带有排序键的 Ruby 1.8

此方法对键进行排序,以便它们按字母顺序出现。
<% @hash.keys.sort.each do |t| %>
<h2><%= t %></h2>
<% @hash[t].each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>
<% end %>
<% end %>

带有数组的 Ruby 1.8

此方法在任何 ruby​​ 版本中的行为都类似于 Ruby 1.9 - 标题将按添加顺序出现。

变量 @hash必须初始化为:
@hash = [ ['Oracle', @q_oracle], ['Ruby and Rails',@q_ruby] ]

View 必须更新为:
<% @hash.each do |title_with_questions| %>
<h2><%= title_with_questions[0] %></h2>
<% title_with_questions[1].each do |q| %>
<%= link_to(q.title + ' (' + q.answer_count.to_s + ') ' + q.question_id.to_s, 'http://stackoverflow.com/' + q.question_answers_url) %> </br>
<% end %>
<% end %>

关于ruby-on-rails - 在模板中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com