2011-04-19 73 views
3

Devise gem用于认证。我需要有一个用户索引和显示视图。发现这个如何在设计维基上,然而玩弄,无法使其工作。Rails 3 - Devise Gem - 如何通过CRUD界面管理用户

Devise - How To: Manage users through a CRUD interface

方法1:请记住删除:从设计模型登记的模块(在我的情况下,它是用户的模型)确保把你map.resources:在map.devise_for以下用户:用户路线(devise_for:用户和资源:Rails 3的用户)。

方法2:devise_for:用户:串流中删除=>“d”资源:用户的色器件逻辑从你的CRUD用户controlle隔离

我的问题:1。 如果您在模型中删除登记的,则如何为用户设计工作? 2.如果你这样做,你能提供一个样本吗?

在此先感谢

回答

3

通过将适当new.html.erb,edit.html.erb,_form.html.erb等文件,在用户浏览文件夹,添加/编辑/删除用户应该工作无异与任何其他CRUD一样,Devise的用户也是其他任何模型。我不会发布新的或编辑ERBS(很简单,并且支架可以告诉你剩下的),但我的用户_form.html.erb的例子...

<%= form_for(@user) do |f| %> 
    <%= render :partial => 'shared/errors', :locals => { :content => @user } %> 

    <div class="field"> 
     <%= f.label :email %><br /> 
     <%= f.text_field :email %> 
    </div> 

    <div class="field"> 
     <%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br /> 
     <%= f.password_field :password %> 
    </div> 

    <div class="field"> 
     <%= f.label :password_confirmation %><br /> 
     <%= f.password_field :password_confirmation %> 
    </div> 

    <div class="field"> 
     <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br /> 
     <%= f.password_field :current_password %> 
    </div> 

    <div class="actions"> 
     <%= f.submit %> 
    </div> 

<% end %> 

在我的,我想我离开了:可注册,我仍然可以通过CRUD管理和更新用户。如果你不这么做,那么用户不能注册自己,但是你仍然可以自己添加和编辑用户(当然,用load_and_authorize_resource来保护用户控制器以保持普通用户不在)。

+0

感谢您的帮助。让我明白你在暗示什么:我使用rails g devise User生成用户模型,并且你建议这样做:rails g controller用户索引new show edit,右键? – coder 2011-04-19 20:34:21

+0

我不得不承认,我做了略微不同的地方,我有两个用户控制器,一个是常规users_controllers.rb,其中注册用户可以查看和编辑他们自己的配置文件,然后另一个admin/users_controller.rb完全用于管理员工用户编辑后端。因为你不想注册,你可能只需要做一个users_controller.rb,然后把你的完整的CRUD/REST/etc放在那里,是的。 – Shannon 2011-04-19 21:32:31

5

以下为我工作。

users_controller.rb

class UsersController < ApplicationController 
... 
    def create 
    @user = User.new(params[:user]) 

    if params[:user][:password].blank? 
     params[:user].delete(:password) 
     params[:user].delete(:password_confirmation) 
    end 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to users_path, notice: 'User was successfully created.' } 
     else 
     format.html { render action: "new" } 
     end 
    end 
    end 
... 
end 

的routes.rb

... 
devise_for :users, :path_prefix => 'd' 
resources :users 
... 

我希望这可以帮助你。

Regards, Giacomo

+0

如果这项工作,我会upvote :) – CoderSpinoza 2013-11-05 12:25:10