添加向Navbar Devise显示用户链接

时间:2013-09-05 16:04:15

标签: ruby-on-rails twitter-bootstrap devise show

在课堂上,我构建了一个Pintrest风格的应用程序,最近我为我的用户设置了一个show动作。链接在各个引脚上工作正常,但是当我尝试将users#show链接添加到名为“Profile”的Navbar时,它不会在任何地方导航。 “个人资料”链接应该导航到users#show,但是“个人资料”的网址显示的是我的pins#index,这是我的根路由。以下是导航栏中_header.html.erb下的链接。

      <div class="nav-collapse collapse">
        <ul class="nav pull-right">
        <% if user_signed_in? %>
          <li><%= link_to "Add Trip", new_pin_path %></li>
          <li><%= link_to "About", about_path %></li>
          <li><%= link_to "Profile", @user %></li>
          <li><%= link_to "Logout", destroy_user_session_path, method: :delete %></li>
        <% else %>
          <li><%= link_to "About", about_path%></li>
          <li><%= link_to "Login", new_user_session_path %></li>
        <% end %>
          </ul>
      </div>

这是我的users_controller.rb

class UsersController < ApplicationController
def show
    @user = User.find(params[:id])
    @pins = @user.pins.page(params[:page]).per_page(20)
  end
end

_pin.html.erbpins#index中的引脚上的show user链接正常工作。

<div class="box">
  <p class= "description">
    <%= pin.description %>
  </p>
  <%= link_to (image_tag pin.image(:medium)), pin %>
  <p class= "author">
    <strong>
      Posted by <%= link_to pin.user.name, pin.user %>
    </strong>
  </p>
</div>

最后,如果我将_pin.html.erb <%= link_to pin.user.name, pin.user %>中的相同链接复制到Navbar,我会为#&lt;#:0x00000100c82520&gt;`获得undefined local variable or method pin'。

这是我的routes.rb帮助。

devise_for :users
match 'users/:id' => 'users#show', as: :user

1 个答案:

答案 0 :(得分:2)

您需要使用current_user代替@user,因为@user在大多数情况下都是零(除了您的用户#show page。

创建始终加载当前用户的/profile路线也是一个好主意。