我正在使用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 []>
不清楚是什么时候发生的。任何帮助将不胜感激
答案 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
您现在可以访问所有信息并随意使用。