我有两种模式:品牌和广告活动,品牌有很多广告系列。当我与任何品牌合作时,我想获得我现有的品牌。
暂停代码只是写“品牌”而不是所有品牌名称。
我的广告系列模型包括:
class Campaign < ActiveRecord::Base
belongs_to :brand
我的Bradn模特:
class Brand < ActiveRecord::Base
has_many :campaigns
这是我的campaigns_conroller:
def index
@campaign=Campaign.all
@brand=Brand.all
end
这是我的索引视图
<% @campaign.each do |campaign| %>
<tr>
<td><%= @brand.name %></td>
<td><%= campaign.title %></td>
'campaign.title'正常运作。我只检索了“品牌”文字,而不是品牌名称。
有人可以说我应该做什么吗?
答案 0 :(得分:1)
首先对index
进行一些更改:
def index
@campaigns = Campaign.includes(:brand).all # (1) Plural naming to reflect its a collection of objects, (2) One call to the DB to fetch both campaigns and associated brands, read about include
end
然后,(您已经想过如何访问关联的对象),区别在于:includes,这不会触发其他DB调用:
<% @campaigns.each do |campaign| %>
<tr>
<td><%= campaign.brand.name %></td>
<td><%= campaign.title %></td>
答案 1 :(得分:0)
@brand
是一个包含所有品牌的数组,我不确定您尝试展示的元素。
我猜你想要每个广告系列的品牌。
<td><%= campaign.brand.name %></td>
答案 2 :(得分:0)
您必须获取广告系列的品牌。您可以通过关联名称访问belongs_to模型:
<% @campaign.each do |campaign| %>
<tr>
<td><%= campaign.brand.name %></td>
<td><%= campaign.title %></td>