Met*_*ker 3 devise ruby-on-rails-4
我在我的 Ruby on Rails 项目中使用了 devise,并且用户有一个 admin-attribute:
架构.rb:
create_table "users", force: :cascade do |t|
.
t.boolean "admin", default: false
end
Run Code Online (Sandbox Code Playgroud)
我希望管理员用户可以编辑其他用户。我不是第一个问这个问题的人,但所有给出的答案都缺乏明确的说明:
但我不明白我需要做什么:它"devise_for :users, :path_prefix => 'my'"在路线中提到,但我的路线中没有。然后,它提到,我需要如何删除 params 哈希的密码密钥,但我的 users_controller 为空。不再提供更多说明。
但我不完全明白,需要做什么:我明白了,我需要添加devise_for :users, :path_prefix => 'd'到我的路由中,但海报还谈到了自己构建表单和控制器,以及隔离用户控制器。我不明白,他是什么意思。
在这个中,海报使用了 cancan,而且他的用户控制器中似乎确实有一个管理类,而我没有:
class Admin::UsersController < ApplicationController
def index
@users = User.all
end
end
Run Code Online (Sandbox Code Playgroud)
再一次,我不知道海报是如何到达那里的,他做了什么。
是否有分步指南,让管理员用户编辑其他用户配置文件?
你可以在这里访问我的代码:https : //github.com/Metaphysiker/philosophica
提前致谢!
我想到了:
devise_for :users,: :path_prefix => 'my'resources :users<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>到: <%= form_for(@user) do |f| %>
将此添加到用户控制器:
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to adminpanel_path
else
render 'edit'
end
end
Run Code Online (Sandbox Code Playgroud)完毕。(奇怪的是,我不能在代码中输入数字 5)