2012-12-09 52 views
2

我有两个定义页面内容(adtype)的导航栏(展示位置& ad)。第一个导航栏位置始终在顶部可见。第二个导航栏ad将根据在展示位置顶部选择的属性在页面的左侧呈现。模型放置&模型广告具有多对多的关系。如何根据顶部导航栏中选择的属性在HTML中呈现第二个导航广告?渲染关联数据(has_many,:through) - Rails

两个导航机型有:

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),并且每个属性链接到一个新的URL,与位置ID(HTTP://本地主机:3000 /展示位置/ 2)结束

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

哪些控制器操作需要呈现_ad_导航栏?它只是“展示位置#show”还是应该是整个网站的标准模板? – Geoff

+0

它应该是整个网站。虽然我刚找到解决方案。首先,我错误地使用了这些复数: belongs_to:展示位置 belongs_to:ads 所以我刚刚摆脱了's'并以这种方式呈现了我的广告(广告视图展示): <%@ placement.ads.all .each do | ad | %>

  • <%=的link_to ad.adname,placement_ad_path(@placement,广告)%>
  • <%end%> 感谢您寻找到这个 – Farhadam

    +0

    对不起,我应该抓住那个。您可能想要创建一个答案并接受它。 – Geoff

    回答

    0

    找到了解决办法:首先,我有这些复数错误:

    belongs_to :placements 
    belongs_to :ads 
    

    所以我就摆脱了“S”和渲染我的广告这种方式(广告视图显示):

    <% @placement.ads.all.each do |ad| %> 
    <%= link_to ad.adname, placement_ad_path(@placement, ad) %> 
    <%end%> 
    
    相关问题