私は調理師のレシピを見せるシンプルなウェブサイトを持っています。団体:1対多の関係、多くの人から1人に戻る方法は?
すべての料理本には多数のレシピがあります。
私の質問:ユーザーをレシピページから適切な料理ブックページに戻すにはどうすればよいですか? id
のレシピを見ているユーザーに、id
の2の料理本に戻る方法を教えてください。
クックブックのコントローラー:
class CookbookController < ApplicationController
def index
@cookbooks = Cookbook.all
end
def show
@cookbook = Cookbook.find(params[:id])
@recipes = @cookbook.recipes
end
end
レシピコントローラー:
class RecipesController < ApplicationController
def show
@recipe = Recipe.find(params[:id])
end
end
クックブックモデル:
class Cookbook < ActiveRecord::Base
has_many :recipes
end
レシピモデル:
class Recipe < ActiveRecord::Base
belongs_to :cookbook
end
の
ルート:私が使ってきたこれまでは
Rails.application.routes.draw do
get '/' => redirect('/cookbooks')
get '/cookbooks' => 'cookbooks#index'
get '/cookbooks/:id' => 'cookbooks#show', as: :cookbook
get '/recipe/:id' => 'recipes#show', as: :recipe
end
:
<%= link_to "Back", :back %>
が、これは恒久的な解決策ではありません。
私は hereルーティングにガイドレールを、続いて、私は次の試みている(そして次のエラー受信):<%= link_to "Back", cookbook_path(@cookbook) %>
Noルート一致{:アクション=> "ショー"、:コントローラ= > "料理"、:ID =>ゼロ}必要なキーが欠落:[:ID]
<%= link_to "Back", cookbook_path(@cookbook.id) %>
未定義方法ニルため `ID」:NilClass
とエラー/例外を上昇または代わりに料理id
のレシピid
で働いていたいずれかの他のソリューション。
また、料理レシピのid
を取得するために、レシピコントローラがCookbookコントローラを継承できるようにしました。