2017-05-19 2 views
0

Deviseにはユーザプロファイルページがありません。私は自分自身を圧倒しています。私がこれまでに考え出したことはこれです:deviseでパブリックユーザプロファイルを作成する

コントローラー:

class Users::ProfilesController < ApplicationController 
    def show 
    @user = User.find_by_username(params[:username]) 
    end 
end 

ルート:

as :user do 
    get 'users/profile/:username', to: 'users/profiles#show' 
end 
resources :users, :only =>[:show] 

ビュー:

<% if user_signed_in? %> 
    <%= current_user.username %> 
<% else %> 
    <%= User.find_by(username: params[:username]) %> 
<% end %> 

ここでの問題は、これは単に何かをレンダリングしています#<User:0x007fa986d711d0>のように、ページを読み込むたびに変更されます。

+1

なぜあなたはビューで 'User'を探していますか? 'User.find_by(username:params [:username])' – jdgray

答えて

1

お使いのshowメソッドでは、Userはすでにusernameであることがわかりました。

あなたが好きを探している属性にごelse文を変更することができます:

@user.username or User.find_by(username: params[:username]).username 

あなたがUser.find_by(username: params[:username])を使用する場合は属性が表示されないされているので、それがusernameパラメータでUserオブジェクトを検索し、オブジェクトを返します。 。

また、ビューロジックを移動して代わりにヘルパーを使用するか、draperを使用すると便利です。

関連する問題