2011-04-12 113 views
1

我已经创建了模型,视图和控制器:加入行动,脚手架生成器

$ rails generate scaffold Post name:string title:string content:text 

然后我加入后控制器的方法:

def fill_default_data 
    Post.fill_default_data 
end 

但是,当我在浏览器中打开http://localhost:3000/posts/fill_default_data我得到的错误:

ActiveRecord::RecordNotFound in PostsController#show

Couldn't find Post with ID=fill_default_data

它看起来像Rails没有看到fill_default_data actio n并使用show方法。我怎样才能添加新的方法脚手架生成的控制器?

回答

12

您应该将相关路线添加到您的config/routes.rb文件中。如果您目前有:

resources :posts 

你应该改变,要:

resources :posts do 
    collection do 
    get :fill_default_data 
    end 
end 

这将生成您可以通过访问/posts/fill_default_data的路线。现在,您的应用程序实际上正在访问显示操作并填写“fill_default_data”作为ID。

0

或者,如果你想要的方法添加一个成员,而不是收集,使用以下命令:

resources :posts do 
    member do 
    get :fill_default_data, :as => 'fill_out_data' 
    end 
end 

这如果愿意的话,如果你是在一个岗位上执行的操作,而不是使用成员职位的收集。另外,as选项会生成命名的路由助手(如* _path或* _url之类的东西),以防万一您需要它们。