0

RoR の初心者で、チュートリアルを進めています。first_name をアクセス可能な属性として定義するユーザー モデルがあるため、このエラーが発生する理由がわかりません (User を大文字にすると、first_name は定義済みのメソッドではないと表示されます)。

エラー: #<#:0x007fdb75963478> の未定義のローカル変数またはメソッド `user' 抽出されたソース (行 #9 付近):

6: 
7: <% @statuses.each do |status| %>
8:   <div class ="status">
9:     <strong><%= user.first_name %></strong>
10:     <p><%= status.content %></p>
11:   <div class ="meta">
12:     <%= link_to time_ago_in_words(status.created_at) + " ago", status %>

マイコード: ユーザーモデル:

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,
:first_name, :last_name, :profile_name
# attr_accessible :title, :body

validates :first_name, presence: true 
validates :last_name, presence: true 
validates :profile_name, presence: true, uniqueness: true, 
format: {
with: /a-zA-Z0-9_-/, 
message: 'Must be formatted correctly.'
} 

def full_name
return first_name + " " + last_name
end

has_many :statuses

end

Index.html.erb:

<div class="page-header">
<h1>All of the statuses</h1>
</div>

<%= link_to "Post a new Status", new_status_path, class: "btn btn-success" %>

<% @statuses.each do |status| %>
<div class ="status">
<strong><%= user.first_name %></strong>
<p><%= status.content %></p>
<div class ="meta">
<%= link_to time_ago_in_words(status.created_at) + " ago", status %>
<span class="admin">
  | <%= link_to "Edit", edit_status_path(status) %> |
  <%= link_to "Delete", status, method: :delete, data: {confirm: "Are you sure you wanna  delete this status"} %>
</span>
</div>
</div>  
<% end %>  
4

1 に答える 1

2

オンライン#9では次のようになります。

 <%= status.user.first_name %>

belongs_to :userあなたがStatusモデルにいると仮定します。

于 2013-03-12T18:59:56.973 に答える