以下是我在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不是在路线中声明的,但它应该是,不是吗?
答案 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| %>