0

あるクラスで Pintrest スタイルのアプリを作成し、最近ユーザー向けに show アクションをセットアップしました。リンクは個々のピンで正常に機能しますが、users#show「プロファイル」という名前の Navbar にリンクを追加しようとすると、どこにも移動しません。プロファイル リンクは に移動する必要がありますが、ルート ルートであるusers#showProfile is my の URL が表示されます。pins#indexの下の私の Navbar のリンクはここにあります_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.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 %>最後に、Navbar にある同じリンクをコピーするとundefined local variable or method、#<#:0x00000100c82520>` のピンが表示されます。

routes.rbこれが役立つ私の事例です。

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

1 に答える 1

2

You need to use current_user instead of @user, since @user will be nil in most cases (except on your users#show page.

It might also be a good idea to create a /profile route that always loads the current user.

于 2013-09-05T16:25:07.480 に答える