我有一个像这样设置的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'
它使用以下网址生成表单:/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会查找User :: GeneralInfosController(注释 - InfoS),当我特意告诉它PUT为“/ user / general_info”时
控制器User::GeneralInfoController
确实存在。
这是我的路线档案:
namespace :user do
resource :general_info, only: [:update, :edit]
root to: 'general_info#edit'
end
答案 0 :(得分:0)
Rails期望控制器名称是资源的全部版本 - 即使资源是单一的。在这种特殊情况下,它特别令人讨厌,因为“GeneralInfos”毫无意义。以下是一些选项:
controller: :general_info
选项传递给您的rute声明。请注意,此控制器是命名空间的事实可能会更改此处需要的确切值。