2011-04-12 54 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之類的東西),以防萬一您需要它們。