Я создал простое приложение для рельсов в рельсах, используя метод строительных лесов для restaurants
.
Это метод контроллера показа и редактирования для restaurants_controller.rb
. Обратите внимание, что это просто пустые методы:
# GET /restaurants/1
# GET /restaurants/1.json
def show
end
# GET /restaurants/1/edit
def edit
end
Это restaurants/show.html.erb
:
<p id="notice"><%= notice %></p>
<%= image_tag @restaurant.image_url %>
<p>
<strong>Name:</strong>
<%= @restaurant.name %>
</p>
<p>
<strong>Address:</strong>
<%= @restaurant.address %>
</p>
...
и restaurants/edit.html.erb
:
<h1>Editing Restaurant</h1>
<%= render 'form', restaurant: @restaurant %>
<%= link_to 'Show', @restaurant, class: "btn btn-link" %> |
<%= link_to 'Back', restaurants_path, class: "btn btn-link" %>
Вот мой вопрос: мое текущее понимание (может быть ошибочным) состоит в том, что мы определяем переменную экземпляра, в данном случае @restaurant
в restaurant_controllers.rb
, и Rails автоматически связывает переменные, определенные в контроллере, с представлениями. Например, метод index в контроллере ресторана:
def index
@restaurants = Restaurant.all
end
когда я вызываю @restaurants
в index.html.erb
, Rails вызывает @restaurants
из метода индекса, который будет использоваться в views
.
Откуда рельсы получают переменную экземпляра @restaurant
в show.html.erb
и edit.html.erb
, хотя методы show
и edit
в restaurants_controller.rb
являются пустыми методами? Я использую Rails 5.
before_action :set_restaraunt
в вашем контроллере? - person Murad Yusufov   schedule 05.11.2016load_and_authorize_resource
в контроллере? - person David   schedule 05.11.2016