我有部分已通过关联。我想得到通过我关联的对象。我该怎么做呢?我觉得这很容易,但我似乎找不到方法。
以下是我传递给部分内容的内容:
<%= render :partial => 'shared/records_table', :locals => {:parent => @location, :records => @location.people} %>
以下是我想传递给部分内容的内容:
<%= render :partial => 'shared/records_table', :locals => {:records => @location.people} %>
还有这样的例子:
<%= render :partial => 'shared/records_table', :locals => {:parent => @time, :records => @time.families} %>
和
<%= render :partial => 'shared/records_table', :locals => {:parent => @car, :records => @car.families} %>
我不知道协会的类别或父母。
答案 0 :(得分:0)
不确定为什么你反对将这些信息传递给部分信息,但如果地点有很多人和某人属于某个地点,那么你可以带走那个部分和呼叫地点的任何人来获取父信息
编辑:在模型上添加parent
方法,返回相应的关联。例如,person.parent
将返回Location
个对象。
严重的是,将父级传递给部分内容没有任何问题。
答案 1 :(得分:0)
我想在你的位置类中你有类似has_many :people
的东西,而你的Person类有belongs_to :location
之类的东西。那么为什么不将#parent
别名为每个类的父级。您的Person类看起来像:
belongs_to :location
alias_method :parent, :location
这样你的所有记录都会回复父母,你不需要将它传递给部分。您需要在家庭班中做类似的事情。
需要注意的是,在partial中调用parent
将从数据库为每条记录加载父级。渲染局部时,你需要做这样的事情来避免这种情况:
render :partial => 'shared/records_table', :locals => {:records => @location.people.includes(:location)}
答案 2 :(得分:0)
遇到类似的情况,以下方法起作用。 ActiveRecord::Association
有一种返回所有者的方法。
@foo.bars.proxy_association.owner
=> @foo