Ассоциации не работают в html.erb - PullRequest
2 голосов
/ 30 марта 2012
  <ol class="noDots">
   <% # @screening.cinema.each do |screening| %>
    <li> 
     <h3><%= screening.cinema.name %></h3>
    </li>
   <% #end %>
  </ol>

Привет всем,Существует связь между кино и кино через скрининг.Модель фильма отдельная, а кино отдельное.Скрининг объединяет их вместе.В модели cinema, кажется, все работает правильно <% = screening.film.title%> работает отлично, и отображение их в цикле работает.

Я хочу создать раскрывающийся список cinema.name со ссылкой иэто приведет тебя туда.Ассоциация должна существовать как некоторые фильмы в разных кинотеатрах.

Возможно ли это, поскольку приведенный выше код не работает для меня.

Заранее спасибо

Ответы [ 5 ]

3 голосов
/ 30 марта 2012
<h3><%= screening.cinema.name %></h3>

Эта строка должна читаться ...

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

И у вас может быть этот выпадающий список в форме с кнопкой Отправить рядом с ним, чтобы перейти на эту страницу ...

2 голосов
/ 30 марта 2012

Звучит так, как будто вы получаете много ошибок «ноль объектов».Дважды проверьте ваш контроллер, чтобы увидеть, какие переменные вы определяете там, которые могут быть доступны в представлениях.

Например, если вы устанавливаете @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 %>

Надеюсь, это поможет!

2 голосов
/ 30 марта 2012

Из того, что я вижу, экран has_many: кинотеатры (не cinema has_many: показы), поэтому

   <%  @screening.cinema.each do |cinema| %>
      <li> 
        <h3><%= cinema.name %></h3>
      </li>
   <% end %>
1 голос
/ 30 марта 2012

Это должно сработать так же, как и при просмотре в комментариях

В контроллере

@screening = Screening.find(some_id)

В представлении

<% @screening.cinema.each do |s| %>
  <li> 
    <h3><%= s.cinema.name %></h3>
  </li>
<% end %>
1 голос
/ 30 марта 2012

Пожалуйста, покажите модель скрининга и режим кинотеатра, но исходя из сути.

Предполагая,

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 на поднабор просмотров, которые вы хотите в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...