Ruby - 是否可以在同一个 "view" 文件中创建两个不同的循环?

Ruby - Is it possible to create two different loops in the same "view" file?

我目前正在 Rails 上学习 Ruby 多亏了一个名为 codecademy 的网站,我正在学习如何显示存储在变量中的数据库数组中的信息

练习更正如下:

<div class="main movie-show">
  <div class="container">
    <div class="movie">

      <!-- Display the movie info here -->
      <div class="info">
        <%= image_tag @movie.image %>
        <h3 class="movie-title"><%= @movie.title %></h3>
        <p class="movie-release-year"><%= @movie.release_year %></p>
        <p class="movie-plot"><%= @movie.plot %></p>
      </div>
    </div>

    <h2>Cast</h2>
    <% @actors.each do |actor| %>
      <div class="actor">
        <%= image_tag actor.image %>
        <h3 class="actor-name"><%= actor.first_name %> <%= actor.last_name %></h3>
        <p class="actor-bio"><%= actor.bio %></p>
      </div>
    <% end %>
  </div>
</div>

你可以看到在 "movie" 部分,他们直接使用变量来显示所需的信息,而他们将所有 "actor" 的部分存储在另一个 |actor| 中。变量

我的问题如下,因为我在网上没有找到满意的答案,是否可以在同一个文件中以相同的方式使用两个变量?喜欢使用

<% @movies.each do |m| %>

<% @actors.each do |a| %>

它仍然有效吗?会不会出错?

您可以在视图中使用任意数量的实例变量,前提是它们已在您的控制器代码中正确定义。

如果您在控制器操作中同时定义了 @actors@movies 实例变量,那么您可以在相应的视图中访问它们。记住:我写的,对应的view。

还有其他方法。例如,如果您定义了 Movie 模型和 Actor 模型之间的关系,并且该关系表明一部电影可以有很多演员。在这种情况下,你只需要在你的控制器中实例化@movies,然后你就可以通过以下方式访问actors:

<% @movies.each do |movie| %>
   <% movie.actors.each do |actor| %>
     <%# All other relevant code %>
   <% end %>
<% end %>

如果您不了解关系,可以按以下方式定义它们:

class Movie < ActiveRecord::Base
  has_many :actors
end

class Actor < ActiveRecord::Base
  belongs_to :movie
  # actors table should have a column named 'movie_id' for this to work
end