所以我在blog_posts.rb模型中有以下内容:
class BlogPost::Fetch < ActiveRecord::Base
API_URI = "http://blog.url.com/rss.xml".freeze
def class
posts = Rails.cache.fetch(API_URI, expires_in: 10.minutes) do
begin
feed = Feedjira::Feed.fetch_and_parse API_URI
feed.entries.take(2)
rescue
[]
end
end
posts
end
端
我的视图助手中的以下内容:
module BlogHelper
def fetch_blog_posts(entries)
posts.each do |post|
unless exists? :guid => post.id
create!(
:title => post.title,
:pubDate => post.date
)
end
end
end
end
然后在我看来:
<% BlogPost.fetch_blog_posts(2).each do |post| %>
<div class="home-blog-post">
<div class="news-date">
<%= post.display_date %>
有了这个礼物,我最终得到了未初始化的常量ActionView :: CompiledTemplates :: BlogPost。
我错过了什么?我觉得这很简单,我只是没有看到。
编辑: 我也尝试了以下内容:
我唯一一次遇到不同的错误就是当我将模型名称更改为blog_post.rb时出现循环错误。
另一个编辑: 我从视图助手那里取出了所有内容,因为它毫无意义。我没有在CMS中使用控制器。所以名为fetch.rb的模型现在具有以下内容:
class BlogPost::Fetch < ActiveRecord::Base
API_URI = 'http://blog.url.com/rss.xml'.freeze
def call
posts = Rails.cache.fetch(API_URI, expires_in: 10.minutes) do
begin
feed = Feedjira::Feed.fetch_and_parse API_URI
feed.entries.take(2)
rescue
[]
end
end
posts
end
def fetch_blog_posts
@posts = BlogPost::Fetch.run.result
end
end
然后在视图中:
<% BlogPost.fetch_blog_posts(2).each do |post| %>
<div class="home-blog-post">
<div class="news-date">
<%= post.display_date %>
</div>
<%= link_to post.title, blog_post_path(post.url_name), class: 'news-title' %>
</div>
仍然遇到同样的错误。
所以我尝试将我的观点改为:
<% @posts(2).each do |post| %>
<div class="home-blog-post">
<div class="news-date">
<%= post.display_date %>
</div>
<%= link_to post.title, blog_post_path(post.url_name), class: 'news-title' %>
</div>
在这种情况下,我最终得到以下错误:语法错误,意外'(',期待keyword_end'.freeze; @posts(2).each do | post | ^
答案 0 :(得分:0)
花了一段时间,但这很有效。我把模型改为:
class Fetch < ActiveRecord::Base
API_URI = 'http://blog.url.com/rss.xml'.freeze
def self.fetch_blog_posts(posts)
posts = Rails.cache.fetch(API_URI, expires_in: 10.minutes) do
begin
feed = Feedjira::Feed.fetch_and_parse API_URI
feed.entries.take(2)
rescue
[]
end
end
posts
end
end
然后将视图更新为:
<% Fetch.fetch_blog_posts(2).each do |post| %>
<div class="home-blog-post">
<div class="news-date">
<%= post.published.strftime("%b %d, %Y") %>
</div>
<%= link_to post.title, post.url, class: 'news-title' %>