あるクラスで Pintrest スタイルのアプリを作成し、最近ユーザー向けに show アクションをセットアップしました。リンクは個々のピンで正常に機能しますが、users#show
「プロファイル」という名前の Navbar にリンクを追加しようとすると、どこにも移動しません。プロファイル リンクは に移動する必要がありますが、ルート ルートであるusers#show
Profile 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