SimpleForm PUT到不正确的控制器

时间:2014-01-23 08:35:03

标签: ruby-on-rails

我有一个像这样设置的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

1 个答案:

答案 0 :(得分:0)

Rails期望控制器名称是资源的全部版本 - 即使资源是单一的。在这种特殊情况下,它特别令人讨厌,因为“GeneralInfos”毫无意义。以下是一些选项:

  • 将控制器多个化。当然,一切都很有效。
  • 添加一个变形,以便Rails知道“Info”不是一个多元化的词。
  • controller: :general_info选项传递给您的rute声明。请注意,此控制器是命名空间的事实可能会更改此处需要的确切值。