次のモデルでセットアップされたプロジェクトがあります。それぞれ->
が関係を表しますhas_many
:
Users->Goals->Milestones
私のルートは次のMilestones
ようになります。
user_goal_milestones GET /users/:user_id/goals/:goal_id/milestones(.:format) milestones#index
POST /users/:user_id/goals/:goal_id/milestones(.:format) milestones#create
new_user_goal_milestone GET /users/:user_id/goals/:goal_id/milestones/new(.:format) milestones#new
edit_user_goal_milestone GET /users/:user_id/goals/:goal_id/milestones/:id/edit(.:format) milestones#edit
user_goal_milestone GET /users/:user_id/goals/:goal_id/milestones/:id(.:format) milestones#show
PUT /users/:user_id/goals/:goal_id/milestones/:id(.:format) milestones#update
DELETE /users/:user_id/goals/:goal_id/milestones/:id(.:format) milestones#destroy
私は Milestones コントローラーの多くの「関数」で、これを多く実行していることに気づきました。
def index do
@user = User.find(params[:user_id])
@goal = Goal.find(params[:goal_id])
end
def edit do
@user = User.find(params[:user_id])
@goal = Goal.find(params[:goal_id])
end
常に定義する必要がないように、コントローラーを変更するにはどうすればよい@user
です@goal
か? クラス定義ブロックの開始直後に、それらを一番上に直接配置しようとしましたが、うまくいきませんでした。