【问题标题】:How to display an array in a rails view?如何在 Rails 视图中显示数组?
【发布时间】:2012-11-01 21:17:07
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails arrays


    【解决方案1】:

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

    <% @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 会查找部分元素,并为数组中的每个元素呈现一个。

    【讨论】:

    • 谢谢。但是,我应该在哪里定义数组(在模型或控制器等中)?
    • 无论你在视图中渲染什么,都应该在控制器中设置。该模型用于描述事物是什么以及它如何运作。控制器是将模型附加到您在页面上看到的内容的粘合剂。
    • 谢谢。这很有帮助!
    • 请注意,第二个选项仅适用于 ActiveModel 集合,不适用于通用数组。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-22
      • 2020-09-06
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多