2013-04-01 21 views
0

我有一個「部分」模型和一個「頁面」模型與相對控制器,並希望兩個呈現相同的視圖。我試圖獲取該類別是否呈現一個頁面或一個部分。對多個模型使用相同的視圖

在頁面中,類別是通過章節引用的。

鏈接到經節時,它呈現正確:/科/ 8

然而,通過鏈接到頁面時:/頁/ 2

我得到的錯誤:「未定義的方法`類別」 for#「在助手的」if @ page.category「部分。

page.rb

class Page < ActiveRecord::Base 
    attr_accessible :skin_id, :section_id, :name, :title, :content 

    belongs_to :skin 
    belongs_to :section 
    validates_presence_of :skin 
    validates_presence_of :section 
end 

section.rb

class Section < ActiveRecord::Base 
    attr_accessible :category_id, :skin_id, :page, :name, :title, :content 

    has_many :pages 

    belongs_to :category 
    belongs_to :skin 

    validates_presence_of :category 
    validates_presence_of :skin 
    validates_presence_of :name 
    validates_presence_of :title 
end 

pages_helper.rb

module PagesHelper 

    def category 
    if @page.category 
     @page.category 
    else 
     @page.section.category 
    end 
    end 
end 

page.html.haml

[email protected] = Section.all 
%nav#side 
    %ul 
    [email protected] do |section| 
     -if section.category == category 
     %li 
      = link_to section.title, section 
      %ul 
      -section.pages.each do |page| 
       %li 
       = link_to page.title, page 

回答

0

先加 'HAS_ONE:類別,:通過=>:部分' 到你的頁面模型

class Page < ActiveRecord::Base 
    attr_accessible :skin_id, :section_id, :name, :title, :content 

    belongs_to :skin 
    belongs_to :section 

    has_one :category, :through => :section 

    validates_presence_of :skin 
    validates_presence_of :section 
end 

下一頁它們拆成諧音。

在您的部分文件夾中創建一個名爲_section.html.haml的文件。然後執行以下

_section.html.haml

%li 
    = link_to section.title, section 
    %ul 
     -section.pages.each do |page| 
     %li 
      = link_to page.title, page 

那麼你page.html.haml

%nav#side 
    %ul 
    [email protected] do |section| 
     -if section.category == category 
     = render :partial => "sections/setion", :locals => {:section => section} 

您現在應該能夠重複使用的章節部分,你應該能夠從頁面訪問類別海峽。

+0

工程就像一個魅力!謝謝! –

相關問題