关联不在html.erb中工作

时间:2012-03-29 23:35:43

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

  <ol class="noDots">
   <% # @screening.cinema.each do |screening| %>
    <li> 
     <h3><%= screening.cinema.name %></h3>
    </li>
   <% #end %>
  </ol>

大家好,
电影和电影之间通过筛选有关联。电影模型是独立的,电影是独立的。筛选将它们组合在一起。在电影模型中,一切似乎都正常工作&lt;%= screening.film.title%&gt;完美地工作并在循环中显示它们。

我想创建一个带有链接的cinema.name下拉列表,它会带你到那里。该协会必须存在于不同电影院的一些电影中。

这是可能的,因为上面的代码对我不起作用。

提前致谢

5 个答案:

答案 0 :(得分:3)

<h3><%= screening.cinema.name %></h3>

这一行应该是......

<h3><%= screening.name %></h3>

你可以在一个表格中放下这个下拉框,旁边有一个提交按钮,带你到那个页面......

答案 1 :(得分:2)

从我看到的屏幕has_many:电影院(不是电影院has_many:放映) 所以

   <%  @screening.cinema.each do |cinema| %>
      <li> 
        <h3><%= cinema.name %></h3>
      </li>
   <% end %>

答案 2 :(得分:2)

听起来你得到了很多“零对象”的错误。仔细检查您的控制器,看看您在那里定义的哪些变量可以在视图中访问。

例如,如果您正在设置@film,那么您可以使用以下内容遍历关联:

<% @film.screenings.each do |screening| %>
  <li> 
    <h3><%= screening.cinema.name %></h3>
  </li>
<% end %>

如果您在获取放映列表时急切加载它们,您应该能够按电影院名称进行按字母顺序排列:

<% @film.screenings.includes(:cinema).order("cinema.name ASC").each do |screening| %>
  <li> 
    <h3><%= screening.cinema.name %></h3>
  </li>
<% end %>

希望有所帮助!

答案 3 :(得分:1)

请显示放映模型和电影模式,但要根据要点...

假设

class Screening     
   belongs_to :film 
   belongs_to :cinema. 
   .....
 end 

 class Film
      has_many :screenings
       has_many :cinemas, :through => :screenings 
 end

 class Cinema
    has_many :screenings,
     has_many :films, :through => screenings 
 end 

我认为你想要的是以下几点。

 <ol class="noDots">
   <% # @screenings.each do |screening| %>
    <li> 
      <h3><%= screening.cinema.name %></h3>
    </li>
   <% #end %>
 </ol>

假设您将@screenings设置为控制器中所需的放映子集。

答案 4 :(得分:1)

这应该适用于评论中的单一筛选。

在控制器

@screening = Screening.find(some_id)

在视图中

<% @screening.cinema.each do |s| %>
  <li> 
    <h3><%= s.cinema.name %></h3>
  </li>
<% end %>