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>
Я бы предложил вам изменить имя параметра в методе 'search' на нечто вроде' query_string'. Это двусмысленно в db-запросе. –
Спасибо за полезный совет! –