我在我的模板中有这个
<% @clients.each do |client| %>
<li><%= link_to client.name, :controller => "client", :action => "show", :id => client.id %></li>
<%=YAML::dump(client.lastfull)%>
<% end %>
客户端看起来像这样:
class Client < ActiveRecord::Base
set_table_name 'client'
alias_attribute :id, :clientid
set_primary_key :clientid
has_many :jobs, :foreign_key => 'clientid', :order => 'starttime DESC'
def lastfull
jobs.first
end
end
这是有效的,这是输出:
--- !ruby/object:Job attributes: jobid: "81" name: dobrak comment: "" endtime: 2012-06-20 10:15:04
但是当我尝试读取任何属性时,我会收到错误:
undefined method `jobid' for nil:NilClass
工作班:
class Job < ActiveRecord::Base
attr_accessor :jobid
set_table_name 'job'
belongs_to :client
has_one :status, :primary_key => 'jobstatus', :foreign_key => 'jobstatus'
end
我尝试添加返回属性并添加attr_accessor的方法jobid,但没有任何方法可以帮助我。有什么建议?谢谢。
Rails 2.3.5
答案 0 :(得分:2)
看起来有客户没有任何工作。如果将行更改为<%= client.lastfull.present? ? YAML::dump(client.lastfull.jobid) : 'client has no jobs' %>
,会发生什么?您还可以查看Object#try
答案 1 :(得分:0)
在输出客户端#lastfull的结果之前添加条件,如下所示:
<% if client.lastfull %>
output job info here like <%= lastfull.jobid %> etc.
<% else %>
no jobs available
<% end %>