2014-01-23 43 views
0

我有一個SimpleForm設置像這樣:SimpleForm並放入不正確控制器

= simple_form_for @profile, url: user_general_info_path, html: { class: 'form-horizontal' } do |f| 
    = f.input :name 
    .form-actions 
    = f.button :submit, class: 'btn-green' 

它產生與此URL形式:/user/general_info

當我按下提交按鈕 - 這裏的控制檯會發生什麼:

Started PUT "/user/general_info" for 127.0.0.1 at 2014-01-23 10:27:30 +0200 

ActionController::RoutingError - uninitialized constant User::GeneralInfosController: 

爲什麼Rails的尋找用戶:: GeneralInfosController(注 - 相關信息),當我明確告訴它放入 「/用戶/ general_info」

控制器User::GeneralInfoController確實存在。

這裏是我的路線文件:

namespace :user do 
    resource :general_info, only: [:update, :edit] 
    root to: 'general_info#edit' 
end 
+0

我假設你的意思是'Controller' User :: GeneralInfosController'確實存在。' (注意複數信息) –

回答

0

Rails的預計控制器名稱被pluralalized資源的版本 - 即使在資源爲單數。在這種特殊情況下,它特別惱人,因爲「GeneralInfos」沒有任何意義。這裏有一些選項:

  • 多化控制器。當然這很醜陋,那麼一切正常。
  • 添加一個變化,讓Rails知道「信息」不是一個多元化的詞。
  • controller: :general_info選項傳遞給您的rute聲明。請注意,這個控制器是命名空間的事實可能會改變確切的值需要在這裏。