我使用devise_invitable只允许用户在被邀请时注册。
要删除用户注册,同时保留编辑或删除帐户的选项,请执行以下操作:
在我的用户模型中,我删除了:可注册
# app/models/user.rb
class User
...
devise :database_authenticatable, :recoverable, :rememberable
...
end
在我的路由文件中:
# config/routes.rb
devise_for :users
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
尝试编辑帐户时,出现此错误:
No route matches [PUT] "/users/edit.user"
尝试删除帐户时,出现此错误:
No route matches [DELETE] "/users/edit.user"
如何删除注册路线和链接,同时保留编辑注册的功能?
仅从模型中删除注册是不够的。
在您的
路由中添加
resources :users, only: [:edit,:update]
这将为您提供 2 条路线
edit_user GET /users/:id/edit(.:format) users#edit
user PUT /users/:id(.:format) users#update
现在在用户控制器中添加以下内容,如果您使用的是 rails4,那么您还需要允许参数
def edit
@user = current_user
end
def update
@user = current_user
if @user.update_attributes(user_params)
redirect_to @user
else
render :edit
end
end
def user_params
params.require(:user).permit(:username,:name,:email) # add all params which u need to save and that must present in user params passed from forms
end
要使表单在应用程序/视图/用户/中添加 edit.html.erb
<%= form_for(@user) do |f| %>
<%= f.label :username %>
<%= f.text_field :username %>
<%= f.label :name %>
<%= f.text_field :name %>
# add all other fields
<%= f.submit "Update" %>
<% end %>