2014-05-09 39 views
0

过去几天我一直在努力尝试建立一个基本的餐厅网站。该网站将列出一些餐馆,每个餐厅都会有一个菜单。尝试将菜单关联到餐馆时出现错误rails

我的菜单协会

class Menu < ActiveRecord::Base 
    belongs_to :store 
end 

class Store < ActiveRecord::Base 
    has_one :menu 
end 

我的路线是现在:

Rails.application.routes.draw do 


    resources :stores do 
    resources :menus 

    end 

root 'stores#index' 

我做的迁移将引用商店。当我尝试创建一个link_to按钮在餐厅展示页面中添加新菜单时,会出现问题。

<%= link_to 'Create menu', new_store_menu_path %> 

这给我的错误,当我尝试加载所有的show.html.erb

No route matches {:action=>"new", :controller=>"menus", :id=>"1"} missing required keys: [:store_id] 

谢谢!

+0

你可以发表你的菜单控制? –

+0

我的答案是否适合您? – Pavan

回答

0

我想你需要添加控制器和动作 应用程序/控制器/ menus_controller.rb

class MenusController < ApplicationController 
before_action :set_menu, only: [:new] 
def new 

end 
private 
    def set_menu 
    @menu = Menu.find(params[:id]) 
    end 
end 
+0

没有工作.. :( – user3617865

0

对于has_one协会,你需要使用单一的resource

Rails.application.routes.draw do 


    resources :stores do 
    resource :menu  #note the changes resource and menu 

    end 

root 'stores#index' 

Source

同时也可作为错误提示,store_id是missing.Make确保您有它在menus

+0

试图改变资源,同样的事情。我认为从迁移的参考事物添加store_id是否正确? – user3617865

+0

@ user3617865是的,它增加了。 – Pavan

相关问题