如何在rails视图中显示数组?

时间:2012-11-01 21:17:07

标签: ruby-on-rails arrays

我对Rails很新,但有一些Ruby理解。如何在View in Rails中显示数组的值?

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

2 个答案:

答案 0 :(得分:13)

你可以像下面这样循环:

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

但使用偏爱更加惯用。创建表示该元素的文件。该文件应与其他新/ show / edit / etc视图位于同一视图目录中,并应使用下划线命名。例如,如果我有一个食物列表作为数组,我想在索引视图上显示列表,我会创建一个名为&#34; _food.html.erb&#34;它将包含给定食物的标记:

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

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

<%= render @foods %>

Rails默认会查找partial,并为数组中的每个元素渲染一个。

答案 1 :(得分:5)

说数组= [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]