我在rails 3中通过关联遇到了一些问题。我收到了一个nil:NilClass的'undefined method'full_name'错误。
看法
<% @comparison.each do |v| %>
<%= link_to v.trial.user.full_name, trial_trials_path %>
<% end %>
控制器
class SearchController < ApplicationController
def search
@comparison = Result.where('variety_id' => [params[:variety_one], params[:variety_two]], 'year' => params[:year]).
joins(:trial).where('trials.irrigated' => params[:irrigated], 'trials.region_id' => params[:regions])
end
结果
class Result < ActiveRecord::Base
belongs_to :trial, :primary_key => 'trial_id'
has_many :users, :through => :trial
end
用户
class User < ActiveRecord::Base
has_many :trials
def full_name
"#{first_name} #{last_name}"
end
end
审判
class Trial < ActiveRecord::Base
has_many :results
belongs_to :user, :primary_key => 'user_id'
end
调用时v.trial.user.full_name
-如果Trail没有用户,它将尝试在nil对象上调用全名,这将导致您看到的错误。
尝试进行一些调试,以找出对象为零的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句