设计路由,定制Devise路由的问题

时间:2013-10-03 21:43:00

标签: ruby-on-rails-3 devise routes ruby-on-rails-4

自定义Devise路由后,我遇到了一些路由问题。

目前设置(但失败):

  • / me / account loading Devise :: Registration#edit form
  • / me / account /:到account_controller#edit
  • 的路线

我的路线(快捷方式):

  devise_for :users do
   ...
  end

  devise_scope :user do
    scope "/me/account" do
      get "/" => "users/registrations#edit", :as => :my_account
      get "/:what" => "accounts#edit", :as => :my_account_edit    
    end
  end

  resources :accounts, :only => [:edit, :update]

Rake路由输出:

           activate_account GET    /reactivate(.:format)                             users#reactivate
                 my_account GET    /me/account(.:format)                             users/registrations#edit
            my_account_edit GET    /me/account/:what(.:format)                       accounts#edit
                     cancel GET    /me/account/cancel(.:format)                      users/registrations#cancel
                            DELETE /me/account(.:format)                             users/registrations#destroy
               edit_account GET    /accounts/:id/edit(.:format)                      accounts#edit
                    account PATCH  /accounts/:id(.:format)                           accounts#update
                            PUT    /accounts/:id(.:format)                           accounts#update

帐户

由于/ me / account实际上是显示注册#edit(设计),所有/ me / account / helpme都是自定义表单字段

这有问题:

  • 更新或失败时/ me /帐户上没有显示通知
  • 如果失败,表单不会使用之前填写的表单值重新填充
  • 它没有更新表格
  • / me / account / helpme在表单提交时转到/ accounts / 1(当前用户ID)并抛出错误

    没有路由匹配{:action =&gt;“edit”,:controller =&gt;“accounts”,:id =&gt;“1”,:what =&gt; nil}缺少必需的键:[:what] < / p>

这些问题让我疯狂。任何人都可以提供一些修复(一个或多个)路由问题的建议吗?

1 个答案:

答案 0 :(得分:1)

关于表单提交错误。

您需要覆盖表单中的网址以提交至:

<%= form_for @resource, url: my_account_edit(what: params[:what]) do |f| %>

这应该在您的视图或设计生成的视图中完成。

如果您没有生成设计视图,那么,只需在终端中运行:

rails g devise:views

修改

您应该告诉我们您的视图中的表单是什么样的,以及控制器如何处理自定义字段的更新。