设计使用用户ID作为格式?

时间:2014-03-16 21:11:13

标签: ruby-on-rails devise

以下是我在Devise中声明表单的方式:

<%= form_for @user, as: :user, url: user_registration_path(@user), remote: true do |f| %>

在我的routes.rb文件中使用此语法进行设置:

devise_for :users, controllers: { registrations: "users/registrations" }

此外,我的路线使用rake routes列出:

cancel_user_registration GET    /users/cancel(.:format)                  users/registrations#cancel
       user_registration POST   /users(.:format)                         users/registrations#create
   new_user_registration GET    /users/sign_up(.:format)                 users/registrations#new
  edit_user_registration GET    /users/edit(.:format)                    users/registrations#edit
                         PATCH  /users(.:format)                         users/registrations#update
                         PUT    /users(.:format)                         users/registrations#update
                         DELETE /users(.:format)                         users/registrations#destroy

如果我user_registration_path它可以正常运行,但这并不是直接从表单发送用户,这与Devise说它应该如何工作不一致(user_registration_path(@user)

我这样做的问题是用户的ID被注册为格式(基本上是/users(.:id)),所以它看起来像/users.3。我理解这是因为:id不是在路线中声明的,但它应该是,不是吗?

1 个答案:

答案 0 :(得分:0)

替换

<%= form_for @user, as: :user, url: user_registration_path(@user), remote: true do |f| %>

使用

<%= form_for @user, as: :user, url: registration_path(@user), remote: true do |f| %>