私は、skillshare.com で 1 か月の Rails コースを受講していますが、自分で (まだ) 解決できていない問題に遭遇しました。
ピンタレストに似たシンプルなアプリを作っています。写真を投稿した後、写真の下にユーザー名を取得しようとしている段階です。「投稿者: (名前)」と表示されます。
エラーのあるコードは次のとおりです。
<div class="box">
<%= link_to (image_tag pin.image(:medium)), pin %>
<p class="description">
<%= pin.description %>
</p>
<p>
<strong>
Posted by: <%= pin.user.name %>
</strong>
</p>
<% if current_user == pin.user %>
<p>
<%= link_to 'Edit', edit_pin_path(pin) %>
<%= link_to 'Destroy', pin, method: :delete, data: { confirm: 'Are you sure?' } %>
</p>
<% end %>
強力なタグの間の中央に、「投稿者: <%= pin.user.name %>」があります。.name を取り出してみたところ、「未定義のメソッド 'name」」なしでサイトが読み込まれますが、奇抜な数字がたくさん表示されます (これは、Ruby または Rails がユーザーを定義するものであり、名前がそれに割り当てられていると推測しています)。現在表示されている数字のバッチ)。
私の推測では、どこかで .name を定義する必要があると思います。これをどこでどのように行うべきかはよくわかりません。誰かがこれを見ることができれば、私は感謝します。ありがとう!
** show.html.erb ファイルでこのコードを見つけました
<div class"row">
<div class="span6 offset3">
<div class="well">
<%= image_tag @pin.image %>
<%= @pin.description %>
<p>
<%= @pin.user.name %>
</p>
<% if current_user == @pin.user %>
<%= link_to 'Edit', edit_pin_path(@pin) %>
<% end %>|
<%= link_to 'Back', pins_path %>
</div>
</div>
</div>
この場合、 pin.user.name は機能しますが、上記のコードの最初のスニペットではまだ機能しません。
モデル/user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:rememberable, :trackable, :validatable #recoverable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :name
# attr_accessible :title, :body
has_many :pins, :dependent => :destroy
end