2012-02-24 6 views
1

私のコミュニティサイトのプロフィールページを作成しようとしています。私はビデオチュートリアルに続き、Devise gemとCanCan gemのgithubに関するドキュメントを読んでいます。私はこれらの2つの宝石と鉄道でのチュートリアルのおかげで、機能している認証システムをインストールし、現在持っています。Devise CanCanロールとプロファイル

私はルビーとレールにはとても新しいので、すべてはまだ非常にリテラルです。私の最初の質問は、私は、ユーザーフォルダまたはこのコントローラーが表示されない

<!-- in users/_form.html.erb --> 
<%= f.collection_select :role, User::ROLES, :to_s, :humanize %> 

カンカンwikiページからコードの行にも関します。これは私が生成することができるものである - 例えば、私は

rails g devise User 

を走った私も実行することができます:

rails g controller Users 

を、私はこの質問hereを見てきましたが、かなりの答えを理解していません。私がしたいことを処理するための "ユーザ"コントローラを生成することによってエラーが発生するでしょうか?

私はデバイスのビューを生成しましたが、コントローラは表示されません。これらは上書きされる可能性があることを理解しています。私が上書きすると、デフォルトのコントローラの機能はすべて上書きされたコントローラーで動作しますか?

"ユーザー"コントローラを生成できる場合は、すべてのプロファイルビュー情報のためにその場所にビューテンプレートを配置することができます。私は質問の量とこのポストの長さについてお詫びしますが、私はもう少しの助けを借りて私が離れて再び走ることができると思います。提供された情報をありがとう。

答えて

2

だから私はこれを解決しました!私は、潜在的に利益を得ることができる同様の質問を持つ人のために私のソリューションを投稿します。

私の質問の一つであった:

私も実行することができます:

rails g controller Users 

をはい、これは私がやったことです。私は、このコマンドは、実際に私がユーザーの後に任意の変数を渡していなかったことに注意することが重要である、次の

rails g nifty:scaffold user 

ようになりますように、ビューを生成するためにnifty scaffold発電機を使用しています。 DeviseはすでにデータベースにUsersテーブルを作成しています。これは紛争を引き起こすでしょう。 Railsは元のデータベースを上書きしたいと考えています。これはやりたくないものです。

これは、ユーザーCRUDの正しい構造を構築しますか?次に、config/routes.rbファイルを開きます。 niftyジェネレータを使用すると、resources :usersがこのファイルの先頭に追加されます。これをdeviseリソースの下に移動し、this devise wiki pageに記載されているパスに接頭辞を付けて、以下のコードに似てください。

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

これは、コントローラを考案全てに「/ D /」プレフィックスを追加して、ユーザーのコントローラと工夫コントローラのURLパスとの競合を削除することが非常に重要です。

としてだけでなく、あなたにusers_controller更新方法次のコードを追加:

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

工夫が正しく検証します保証します。

ユーザーがまだ登録されていない場合は、今すぐ登録してください。あなたは今であり、そのユーザーのプロフィールページを持っている:

はlocalhost:3000 /ユーザー/ 1 はlocalhost:3000 /ユーザー/ 2 はlocalhost:3000 /ユーザー/ 3 ...電気ショック療法

をあなたはすることができます各ユーザーのプロファイルページに表示される情報を変更するには、viewsフォルダ内のuser show.html.erbページを編集します。

役割について、私の質問については

:あなたもライアンを次れた場合は、フォームにこのコードを追加することができますので、あなたが今、気の利いた足場ジェネレータによって作成されたユーザのコントローラにこのへのアクセス権を持っている

<!-- in users/_form.html.erb --> 
<%= f.collection_select :role, User::ROLES, :to_s, :humanize %> 

hereのようにCanCanの役割を統合するBatesメソッド。

これがうまくいけば助かります。

関連する問題