使用设计和单独的控制器(用户)进行身份验证,这是一个“显示”操作
class UsersController < ApplicationController
#before_filter :authenticate_user!
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
end
到目前为止,视图(users / show.html.erb)仅显示所访问个人资料的用户名
<%= @user.username %>
路由也是:
resources :users
我希望这些个人资料页面可以公开访问,如果他们获得链接/告知地址,但也想要一个链接可供当前登录的用户访问他的个人资料。我的标题中的一个片段:
<li><%= link_to "Profile", @user %></li>
<li><%= link_to "Settings", edit_user_registration_path %></li>
<li><%= link_to "Logout", destroy_user_session_path, method: "delete" %></li>
目前,@ user就是为了阻止路由错误。我不完全确定要链接到什么,尝试了很多组合,但很明显我的铁杆新手心灵缺少了我需要做的额外的事情。非常感谢任何帮助!
(Rails 4,ruby 2.0.0)
附注我还希望最终允许指向个人资料页面的链接以以下格式显示ID +用户名:#{id} - #{username}(而不仅仅是是users / 1 - &gt; users / 1-bbvoncrumb)。
答案 0 :(得分:14)
如果您希望将User
实例作为参数传递给link_to
,则需要将其链接到指定用户的show
页面。因此,如果您想要链接到Devise中当前登录的用户配置文件,您只需要:
<li><%= link_to "Profile", current_user %></li>
答案 1 :(得分:3)
如果您想查看当前登录的用户个人资料,请确保您已登录。
在用户控制器中添加before_filter :authenticate_user!
。
然后在标题链接<li><%= link_to "Profile", current_user %></li>
答案 2 :(得分:3)
我认为这可能会对你有所帮助。
在“从外部路由Rails”中,
例如,您希望/ profile始终显示该配置文件 目前登录用户。在这种情况下,您可以使用单数 资源来映射/配置文件(而不是/ profile /:id)到节目 动作。
match "profile" => "users#show", :as => 'profile'
<li><%= link_to "Profile", profile_path %></li>
这适用于私人资料页面。
由于公共资料页面与私人资料页面不同,我会创建一个配置文件控制器来显示公开资料。