7

我对 Rails 很陌生,但对 Ruby 有一些了解。如何在 Rails 的视图中显示数组的值?

我应该在哪里定义数组(模型或控制器)?另外,如何引用数组并在视图上的成员之间进行迭代?

4

2 回答 2

14

您可以像这样循环遍历它:

<% @array.each do |element| %>
  <li><%= element.whatever %></li>
<% end %>

但使用部分更习惯用语。创建一个代表元素的文件。该文件应与其他 new/show/edit/etc 视图位于同一视图目录中,并应使用下划线命名。例如,如果我有一个食物列表作为数组并且我想在索引视图上显示该列表,我将创建一个名为“_food.html.erb”的部分,其中包含给定食物的标记:

<div>
  Name: <%= food.name %>
  Calories <%= food.calories %>
</div>

然后在 index.html.erb 中,我会像这样渲染所有食物:

<%= render @foods %>

默认情况下,Rails 会查找部分元素,并为数组中的每个元素呈现一个。

于 2012-11-01T21:37:45.717 回答
6

说数组 = [1,2,3]。您可以通过调用内部 erb 标记来在视图中显示它,如下所示:

<%= array %> # [1,2,3]

如果你想遍历它:

<% array.each do |a| %>
<%= a %> Mississippi. 
<% end %> # 1 Mississippi. 2 Mississippi 3 Mississippi.

或使用辅助方法:

<%= a.to_sentence %> # 1, 2, and 3

至于在哪里定义它们,这取决于。如果是静态列表,您可以在模型中定义它们,如下所示:

class Foo < ActiveRecord::Base
  BAR = [1,2,3]
end

然后通过调用几乎可以在任何地方访问它们

Foo::BAR

如果您只是该特定视图中的数组,则可以将其分配给控制器中的实例变量,如下所示:

class FooController < ApplicationController
  def index
    @array = [1,2,3]
  end
end

然后像这样从视图中调用它:

<%= @array %> # [1,2,3]
于 2012-11-01T21:36:03.983 回答