试图在我的应用程序中共享模型

时间:2014-12-29 15:58:15

标签: ruby-on-rails-4 model

我正在使用rails创建一个网站,我想分享模型。我按照教程创建了一篇文章。在ArticlesController中是索引,显示,新建,编辑,创建,更新和销毁。我想我会用它作为我的应用程序的数据输入部分。然后我打算创建一个包含家庭,新闻,视频,音乐和活动的PageController。这是我的设置:

这是我的文章模型

 class Article < ActiveRecord::Base
    has_attached_file :image, styles: { large:"700x700>", medium:"300x300>", thumb:"150x150#"}
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
    validates :title, presence: true,
                length: { minimum: 5 }
    belongs_to :page
end

这是我的页面模型

class Page < ActiveRecord::Base
    has_many :article
end

这是我的页面控制器

 class PageController < ApplicationController
  def home
 @page = Page.includes(:articles)
  end

  def news
  end

  def videos
  end

  def music
  end

  def events
  end
 end

这是我的家庭观点

<h1>Page#home</h1>
<p>Find me in app/views/page/home.html.erb</p>


<%= @page.articles.each do |article| %>
  <%= article.title %>
  <%= article.content %>
  <%= article.image %>
<% end %>

这是我得到的错误

 undefined method `articles' for #<ActiveRecord::Relation []>

不清楚是什么时候发生的。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

根据您发布的有限信息,我假设您要做的最好的事情是创建一个关联。页面应该有多篇文章和文章属于一个页面。 http://guides.rubyonrails.org/association_basics.html

设置完成后,您的控制器可以设置如下:

@page = Page.includes(:articles)

这将在单个SQL查询中加载您的页面及其相关文章,然后您可以调用

@page.articles.each |article|
  puts article.title
  puts article.content
  puts article.image 
end

您现在可以访问所有信息并随意使用。