QA@IT
«回答へ戻る

回答を投稿

create アクションで @shop が定義されていない状態(nilな状態)で @shop.id を呼び出しているためにエラーになっていると思われます。 new アクションの内容によりますが、きちんとフォームの定義が出来ていたと仮定すると、下記のように params で渡ってきた情報を使って Menu を作るとうまくいくと思います。

def create
  @menu = Menu.new(shop_id: params[:shop_id])
  if @menu.save
    redirect_to @menu, notice: "メニュー作成完了"
  else
    render action: "new"
  end
end

ただ、メニューの新規作成フォームがうまくできていない(shop_id を渡すようになっていない)と上記のアクションでもエラーになると思います。もしうまくいかなければフォームのコードも貼ってみてください。

create アクションで `@shop` が定義されていない状態(nilな状態)で `@shop.id` を呼び出しているためにエラーになっていると思われます。 new アクションの内容によりますが、きちんとフォームの定義が出来ていたと仮定すると、下記のように params で渡ってきた情報を使って Menu を作るとうまくいくと思います。

```
def create
  @menu = Menu.new(shop_id: params[:shop_id])
  if @menu.save
    redirect_to @menu, notice: "メニュー作成完了"
  else
    render action: "new"
  end
end
```

ただ、メニューの新規作成フォームがうまくできていない(shop_id を渡すようになっていない)と上記のアクションでもエラーになると思います。もしうまくいかなければフォームのコードも貼ってみてください。