私はrestaurants
のスキャフォールディング方法を使ってレールに簡単なレールアプリを作成しました。railsはコントローラからビューへのインスタンス変数をどのように渡しますか?
これは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はcontrで定義された変数を自動的に接続しますビューへのoller。例えば、レストランのコントローラのインデックス方法:私はindex.html.erb
で@restaurants
を呼び出すとき
def index
@restaurants = Restaurant.all
end
、Railsはviews
で使用するインデックスメソッドから@restaurants
が表示されます。レールがrestaurants_controller.rb
にもかかわらずshow
とedit
方法からshow.html.erb
とedit.html.erb
に@restaurant
インスタンス変数を取得ん
は空のメソッドですか?私はあなたがする必要がない場合はすべてのアクションに
@test = Test.find(params[:id])
を追加するのと同じ用量が生成足場
class TestsController < ApplicationController
before_action :set_test, only: [:show, :edit, :new, :update, :destroy]
private
def set_test
@test = Test.find(params[:id])
end
end
これを適用することによって、このacheivesレールレール5.
あなたのコントローラに 'before_action:set_restaraunt'がありますか? –
コントローラに 'load_and_authorize_resource'と一緒にCanCanを使用していますか? – David