我有两个导航栏(展示位置和广告),用于定义页面内容(adtype)。第一个导航栏,展示位置始终显示在顶部。第二个导航栏ad将根据在展示位置顶部选择的属性在页面左侧呈现。模型放置&模特广告有很多很多关系。如何根据顶部导航栏中放置的属性在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
以下是内容的模型,adtype,取决于在导航栏中选择的属性:
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)
<% Placement.all.each do |placement| %>
<li ><%= link_to placement.placementname, placement_path(placement.id) %> </li>
<%end%>
答案 0 :(得分:0)
找到解决方案:首先,我错误地将这些作为复数:
belongs_to :placements
belongs_to :ads
所以我摆脱了's'并以这种方式呈现我的广告(广告视图显示):
<% @placement.ads.all.each do |ad| %>
<%= link_to ad.adname, placement_ad_path(@placement, ad) %>
<%end%>