2

我有两个定义页面内容(广告类型)的导航栏(展示位置和广告)。第一个导航栏,placement,总是在顶部可见。第二个导航栏广告将根据在展示位置顶部选择的属性呈现在页面左侧。模型展示位置和模型广告具有多对多的关系。如何根据在顶部导航栏中选择的属性(展示位置)在 html 中呈现第二个导航广告?

两种导航模型是:

class Placement < ActiveRecord::Base  
  attr_accessible :placementname  
  has_many :adtypes, :foreign_key => "placement_id"  
  has_many :ads, :through => :adtypes   
end


class Ad < ActiveRecord::Base  
  attr_accessible :adname  
  has_many :adtypes, :foreign_key => "ad_id"  
  has_many :placements, :through => :adtypes  
end

这是内容的模型,广告类型,这取决于在导航栏中选择的属性:

class Adtype < ActiveRecord::Base  
  attr_accessible :adtype_screenshot, :location, :placement_screemshot, :specs  
  belongs_to :placements  
  belongs_to :ads  
end

这是我的模式数据库:

ActiveRecord::Schema.define(:version => 20121127052112) do  
  create_table "ads", :force => true do |t|  
    t.string   "adname"  
    t.datetime "created_at"  
    t.datetime "updated_at"  
  end 

  create_table "adtypes", :force => true do |t|  
    t.integer  "placement_id"  
    t.integer  "ad_id"  
    t.string   "location"  
    t.string   "placement_screenshot"  
    t.string   "adtype_screenshot"  
    t.string   "specs"  
    t.datetime "created_at"  
    t.datetime "updated_at"  
  end

  create_table "placements", :force => true do |t|  
    t.string   "placementname"  
    t.datetime "created_at"  
    t.datetime "updated_at"  
  end    
end  

这是我的 routes.rb 文件:

  resources :placements do  
    resources :ads do  
      resources :adtypes do  
      end  
    end  
  end  

这是我如何呈现我的顶部导航 (_navigation.html.erb) 并将每个属性链接到以展示位置 ID (http://localhost:3000/placements/2) 结尾的新 url

<% Placement.all.each do |placement| %>  
  <li ><%= link_to placement.placementname, placement_path(placement.id) %> </li>  
<%end%>  
4

1 回答 1

0

找到了解决方案:首先,我错误地将这些作为复数:

belongs_to :placements 
belongs_to :ads 

所以我只是去掉了's'并以这种方式呈现我的广告(广告视图显示):

<% @placement.ads.all.each do |ad| %>  
<%= link_to ad.adname, placement_ad_path(@placement, ad) %>  
<%end%>
于 2012-12-28T20:00:50.017 回答