Ruby on rails 在html.erb中不起作用的关联

Ruby on rails 在html.erb中不起作用的关联,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,大家好, 电影和电影之间有一种通过放映的联系。电影模式是分开的,电影院是分开的。筛选将它们结合在一起。在电影模型中,一切似乎都能正常工作,并以循环方式显示它们 我想创建一个带有链接的cinema.name下拉列表,它会带您到那里。该协会必须作为不同电影院的一些电影存在 这是可能的,因为上面的代码对我不起作用 提前感谢 <ol class="noDots"> <% # @screening.cinema.each do |screening| %> <

大家好,
电影和电影之间有一种通过放映的联系。电影模式是分开的,电影院是分开的。筛选将它们结合在一起。在电影模型中,一切似乎都能正常工作,并以循环方式显示它们

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

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

提前感谢


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

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


你可以将这个下拉框做成一个表单,旁边有一个提交按钮,将你带到那个页面…

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



  • 请根据要点显示放映模式和影院模式

    假定

       <%  @screening.cinema.each do |cinema| %>
          <li> 
            <h3><%= cinema.name %></h3>
          </li>
       <% end %>
    
    我认为你想要的是以下几点

    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 
    
    
    

  • 假设您将@screenings设置为控制器中所需的屏幕子集。

    这应该会起作用,因为它在注释中对您的单个屏幕起作用

    在控制器中 在视图中
    
    

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

    例如,如果您正在设置@film,那么您可以通过如下方式遍历关联:

    <% @screening.cinema.each do |s| %>
      <li> 
        <h3><%= s.cinema.name %></h3>
      </li>
    <% end %>
    
    
    
  • 如果您在抓取电影列表时希望加载电影名称,则还应能够按电影名称的字母顺序排列:

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

  • 希望有帮助

    在terminal run Rails c中,然后像在控制器中一样进行筛选,“screening=screening.find by_id(some_id)”,然后运行“y screening.cinema”,查看它是否返回一个结果或数组。你可能需要做'screening.cinema.first.name'@bookofgreg'screening.cinema.name'或'screening.cinema.first.name'会发生什么?未定义的方法'cinema'for nil:nilclass为了不让自己困惑,你可能想把| screening |改为| cinema Hi Norto23我尝试了这个方法,但我得到了以下错误:未定义的方法'cinema'零:第48行的零级。48:。@atbyrd,我也试过你的方法,但没有,整个代码看起来像这样。。。发布电影、放映和电影线5的模型可能会有所帮助,因为要点应该是Cinema.name,而不是Screening.name未定义方法“Cinema”for nil:nilclass这是正确的答案。您需要将@screening分配给控制器中的适当屏蔽。您有一个nil对象,但您没有预料到它!您可能期望数组的一个实例。计算nil.each时出错,没有控制器代码,模型代码我们都只是猜测。。你有这部电影,你想要一份所有放映这部电影的电影院的名单?或所有筛选的列表>。。假设你的电影模型中有很多电影放映,你会做一些类似@film.screenings.each do | screening |的事情。
    @screening = Screening.find(some_id)
    
    <% @screening.cinema.each do |s| %>
      <li> 
        <h3><%= s.cinema.name %></h3>
      </li>
    <% end %>
    
    <% @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 %>