我有一个“部分”模型和一个带有相对控制器的“页面”模型,并希望两者都呈现相同的视图。我正在尝试获取类别,无论我是渲染页面还是部分。
在页面中,通过部分引用类别。
通过以下方式链接到某个部分时,它会正确呈现:/ sections / 8
但是,当通过以下方式链接到页面时:/ pages / 2
我得到了错误:“帮助器的”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
-@sections = Section.all
%nav#side
%ul
-@sections.each 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 :(得分:0)
首先添加'has_one:category,:through =&gt; :部分'到你的页面模型
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
接下来将它们分成几部分。
在sections文件夹中创建一个名为_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
-@sections.each do |section|
-if section.category == category
= render :partial => "sections/setion", :locals => {:section => section}
您现在应该可以重复部分部分,并且您应该能够从页面访问类别海峡。