带设计的用户配置文件页面 - 显示操作的路由

时间:2013-07-03 13:38:44

标签: ruby-on-rails devise ruby-on-rails-4

使用设计和单独的控制器(用户)进行身份验证,这是一个“显示”操作

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)。

3 个答案:

答案 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>

这适用于私人资料页面。

由于公共资料页面与私人资料页面不同,我会创建一个配置文件控制器来显示公开资料。