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>
,每次我加载页面时都会更改。
在您的show
方法中,您已经通过username
找到了您的User
。
您可以将 else
语句更改为要查找的属性,例如:
@user.username or User.find_by(username: params[:username]).username
使用 User.find_by(username: params[:username])
时,它通过 username
参数查找User
对象并返回该对象,因为未显示任何属性。
此外,将视图逻辑移出并使用帮助程序或使用 Draper可能会有所帮助。