2sc*_*ish 6 arrays ruby-on-rails
我是Rails的新手,但有一些Ruby理解.如何在View in Rails中显示数组的值?
我应该在哪里定义阵列(模型或控制器)?另外,如何引用数组并在View上的成员之间进行迭代?
Jim*_*ker 14
你可以像下面这样循环:
<% @array.each do |element| %>
<li><%= element.whatever %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是使用偏爱更加惯用.创建表示该元素的文件.该文件应与其他新/ show/edit/etc视图位于同一视图目录中,并应使用下划线命名.例如,如果我有一个食物列表作为数组,我想在索引视图上显示列表,我会创建一个名为"_food.html.erb"的部分,其中包含给定食物的标记:
<div>
Name: <%= food.name %>
Calories <%= food.calories %>
</div>
Run Code Online (Sandbox Code Playgroud)
然后在index.html.erb中,我会渲染所有的食物:
<%= render @foods %>
Run Code Online (Sandbox Code Playgroud)
Rails将默认查找partial,并为数组中的每个元素渲染一个.
比喻array = [1,2,3].您可以通过调用erb标记在视图中显示它,如下所示:
<%= array %> # [1,2,3]
Run Code Online (Sandbox Code Playgroud)
如果你想迭代它:
<% array.each do |a| %>
<%= a %> Mississippi.
<% end %> # 1 Mississippi. 2 Mississippi 3 Mississippi.
Run Code Online (Sandbox Code Playgroud)
或使用辅助方法:
<%= a.to_sentence %> # 1, 2, and 3
Run Code Online (Sandbox Code Playgroud)
至于在哪里定义它们,取决于它.如果它是静态列表,您可以在模型中定义它们,如下所示:
class Foo < ActiveRecord::Base
BAR = [1,2,3]
end
Run Code Online (Sandbox Code Playgroud)
然后通过电话访问他们几乎任何地方
Foo::BAR
Run Code Online (Sandbox Code Playgroud)
如果您只是该特定视图中的数组,则可以将其分配给控制器中的实例变量,如下所示:
class FooController < ApplicationController
def index
@array = [1,2,3]
end
end
Run Code Online (Sandbox Code Playgroud)
然后从这样的视图中调用它:
<%= @array %> # [1,2,3]
Run Code Online (Sandbox Code Playgroud)