How does rails pass instance variable from controller to views? -
i created simple rails app in rails using scaffolding method restaurants
.
this show , edit controller method restaurants_controller.rb
. notice how blank methods:
# /restaurants/1 # /restaurants/1.json def show end # /restaurants/1/edit def edit end
this 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> ...
and 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" %>
here question: current understanding (could wrong) define instance variable, in case, @restaurant
in restaurant_controllers.rb
, , rails automatically connects variables defined in controller views. example, index method in restaurant controller:
def index @restaurants = restaurant.all end
when call @restaurants
in index.html.erb
, rails brings @restaurants
index method used in views
.
where rails @restaurant
instance variable in show.html.erb
, edit.html.erb
though show
, edit
method in restaurants_controller.rb
empty methods? using rails 5.
so rails acheives applying generated scaffolds
class testscontroller < applicationcontroller before_action :set_test, only: [:show, :edit, :new, :update, :destroy] private def set_test @test = test.find(params[:id]) end end
that dose same adding
@test = test.find(params[:id])
every action if don't need to..
that then, sets instance variable on actions defined before_action
im no rails pro, there may better answer this, have learned not question "rails magic".
Comments
Post a Comment