未定义的方法`full_name'为零:NilClass
这是对teamtreehouse.com的练习。未定义的方法`full_name'为零:NilClass
user.rb
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
validates :first_name, presence: true
validates :last_name, presence: true
validates :profile_name, presence: true,
uniqueness: true
has_many :statuses
def full_name
first_name + " " + last_name
end
end
status.rb
class Status < ActiveRecord::Base
attr_accessible :content, :user_id
belongs_to :user
end
,我发现了以下错误。
undefined method 'full_name' for nil:NilClass
显示/app/views/statuses/index.html.erb在行#9提出:
6:
7: <% @statuses.each do |status| %>
8: <div class="status">
9: <strong><%= status.user.full_name %></strong>
10: <p><%= status.content %></p>
11: <div class="meta">
12: <%= link_to time_ago_in_words(status.created_at) + " ago", status %>
我真的很想知道为什么。
的问题是,当我之前的用户部分构建状态部分,我已经生成的测试的状态那没有first_name或last_name。
修复它是打开轨道控制台类型的方式:rails console
然后Status.delete_all
你好,我想你做了拼写错误书写
User.rb file in model
has_many :statuses
请做适当的关联。
它是
<% statuses.user.full_name %>
我还以为你在写的复数和Ruby可以理解???也做了它只是为了它,它确实返回一个错误,将其更改为状态。 – Jadam 2013-04-29 04:58:28
添加属性full_name
在模型中。
attr_accessible :full_name
然后更新
def full_name
first_name + " " + last_name
end
如下,
def full_name
self.full_name = self.first_name + " " + self.last_name
end
不应该是'attr_accessor'而不是'attr_accessible' – Viren 2013-04-30 14:45:11
这个错误是因为一些记录不具有名称之一,你可以使用下面的代码避免错误。
<%= status.user.try(:full_name) %>
如果FULL_NAME的作品,它把字符串中,它把其他的方式“”或零
感谢您花时间发布此答案!拯救生命! – Starkers 2013-09-08 00:32:23