2011-04-19 8 views
3

Devise gem은 인증에 사용됩니다. 나는 사용자 인덱스와 쇼 뷰가 필요하다. devis 위키에서 어떻게 놀았는지 발견 했으니, 작동시킬 수는 없습니다.Rails 3 - Devise Gem - CRUD 인터페이스를 통해 사용자를 관리하는 방법

Devise - How To: Manage users through a CRUD interface

방법 1 : (내 경우는 사용자 모델이었다) 당신의 map.resources를 넣어 있는지 확인 고안 모델에서 등록 가능한 모듈 : 다음을 제거하기 위해 기억하십시오 map.devise_for 아래 사용자 : 사용자 route (devise_for : 사용자 및 자원 : Rails 3 사용자).

방법 2 : devise_for : 사용자 : path_prefix => 'D'자원 : 사용자는 침전물 사용자 controlle에서 고안 로직을 분리하는

내 질문 : 1. 다음 모델에 등록 가능한 제거하는 경우 사용자를 위해 어떻게 작동합니까? 2.이 작업을 수행했다면 샘플을 제공 할 수 있습니까? 추가, 사용자 뷰 폴더에서 해당 new.html.erb, edit.html.erb, _form.html.erb 등 파일을 배치함으로써 미리

답변

3

에서

덕분에/편집/삭제하는 사용자는 다른 어떤 일을해서는 안 다른 CRUD와 마찬가지로 Devise의 User는 다른 모델과 마찬가지입니다. 내 생각, 내에서

<%= 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 %> 

... 나는 (아주 간단하고, 발판은 당신에게 나머지를 보여줄 수) 새로운 또는 편집 ERBS을 게시하지 않습니다,하지만 내 사용자 _form.html.erb의 예 나 떠났다 : 등록 가능하며 CRUD를 통해 사용자를 관리하고 업데이트 할 수 있습니다. 제외하면 사용자가 스스로 등록 할 수는 없지만 사용자를 직접 추가하고 편집 할 수 있습니다 (물론 일반 사용자를 제외시키기 위해 load_and_authorize_resource를 사용하여 Users 컨트롤러를 보호 할 수 있습니다).

+0

감사합니다. 내가 당신이 제안하는 것을 이해하게하겠습니다 : 레일즈 g 컨트롤러를 사용하여 사용자 모델을 생성했습니다 : 레일즈 g 컨트롤러 사용자 인덱스 새로운 쇼 편집, 오른쪽 ??? – coder

+0

필자는 두 명의 사용자 컨트롤러가있는 곳에서 약간 다르게 수행했음을 인정해야합니다. 등록 된 사용자가 자신의 프로필을보고 편집 할 수있는 일반 users_controllers.rb 한 곳, 관리중인 staff/users_controller.rb는 관리 사용자 백엔드. 등록을 원하지 않기 때문에 아마도 users_controller.rb 파일 하나를 만들고 거기에 전체 CRUD/REST/etc를 넣을 수 있습니다. – Shannon

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 
... 

은 내가 당신을 도울 수 있기를 바랍니다.

감사합니다, 자코모 도와

+0

이것이 작동하면 나는 upvote :) – CoderSpinoza

관련 문제