2016-06-16 3 views
0

1) Я пытаюсь создать сайт с несколькими ресторанами, каждый из которых имеет свое уникальное меню, отображаемое в таблице, ассоциация работает в консоли, но не в коде. Я перехожу через @restaurant экземпляр переменной, а затем в таблице я помещаю данные, которые я хочу из меню, так что restaurant.menu.dish, но получаю ошибку, которая «каждый» не определена, хотя я не указывал отношения один-один. Как я могу выполнить желаемое поведение?Loop through rails association

2) Как обеспечить соответствие данных меню правильному ресторану, я предполагаю, что диспетчер шоу сохраняет переменную ресторана с определенным идентификатором и вызывая метод, например .dish, будет знать, какой ресторан основан на показать переменную действия, это правильное мышление?

Ресторан Модель

class Restaurant < ActiveRecord::Base 

    has_attached_file :thumbnail, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :thumbnail, content_type: /\Aimage\/.*\Z/ 
    has_many :menus 

    def self.search(search) 
    if search 
    @restaurants= Restaurant.where("name LIKE ?", "%#{search}%") 
    else 
     @restaurants=Restaurant.all 
    end 
    end 
end 

Меню Модель контроллера

class Menu < ActiveRecord::Base 
    belongs_to :restaurant 
end 

ресторан с шоу-акции

def show 
    @restaurant = Restaurant.find(params[:id]) 
end 

show.html.erb

<div class="col-md-8"> 
    <table class="table table-striped"> 
    <h3>Menu</h3> 
    <thead><tr><th>Dish</th><th>Price</th><th>Calories</th></tr></thead> 
    <tbody> 
    <%= @restaurant.each do |restaurant| %> 
     <tr> 
      <td><%= restaurant.menu.dish %></td> 
      <td><%= restaurant.menu.price %></td> 
      <td><%= restaurant.menu.price %></td> 
     </tr> 
     <tr><td>..</td><td>..</td><td>..</td></tr> 
    <% end %> 
    </tbody> 
    </table> 
</div> 
+1

Я бы предложил вам изменить имя параметра в методе 'search' на нечто вроде' query_string'. Это двусмысленно в db-запросе. –

+0

Спасибо за полезный совет! –

ответ

0

Вы показываете ресторан, который имеет много меню, справа? Здесь мы идем:

<%= @restaurant.menus.each do |menu| %> 
    <tr> 
    <td><%= menu.dish %></td> 
    <td><%= menu.price %></td> 
    </tr> 
    <tr><td>..</td><td>..</td><td>..</td></tr> 
<% end %> 
+0

Конечно, было бы так просто! Спасибо, будет помнить об этом. –