2013-09-05 54 views
0

在課堂上,我構建了一個Pintrest風格的應用程序,最近我爲用戶設置了一個顯示操作。該鏈接在各個引腳上工作正常,但是當我嘗試將名爲「Profile」的Navigator鏈接添加到Navbar時,它不會在任何位置導航。配置文件鏈接應該導航到users#show,但URL顯示的配置文件是我的pins#index這是我的根路線。以下是我的導航欄中_header.html.erb下的鏈接。添加顯示用戶鏈接到Navbar設計

 <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.erb這是在我的pins#index呈現的節目的用戶連接工作正常。

<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 %>到導航欄相同的鏈接,我得到undefined local variable or method銷爲#<#:0x00000100c82520>`。

這是我的routes.rb incase有幫助。

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

回答

2

您需要使用current_user代替@user,因爲@user將是零在大多數情況下(除了你的用戶#顯示頁面。

它也可能是創建一個/profile路線個好主意總是加載當前用戶

+0

感謝它的工作!我想我看到了我陷入困境的地方,我想我可以調用@user路由到節目,而不是在顯示頁面上調用它。當我在我的終端中做了Rake路由時,'current_user'沒有顯示爲選項? 另外,感謝提示,我會看看是否可以找到如何創建'/ profile'路徑。 –

+0

太好了,我希望我早點找到你的迴應:) –