1

我刚刚再次开始使用 Rails,最近按照Sitepoint 指南构建了一个 RSS Feed 应用程序。我逐字按照说明进行操作,但收到错误消息undefined method 'html_safe' for nil:NilClass。我查看了数据库,似乎 Feedjira 没有将contentorauthor属性解析到数据库中。

在快速谷歌之后,我在 8 月 13 日的 Github 页面#178#176上发现了以下问题,但考虑到这导致我很惊讶没有出现的重大问题。这可能是我的代码中的错误,可以在此处找到,但我已经检查过并且认为不是。

有谁知道我做错了什么?我已按照问题 #176中的建议更改了 feedjira 文档中的 self.feed_classes,但它仍然没有收到任何东西。

4

2 回答 2

1

RSS 和 Atom 提要不提供内容属性。“内容”作为“摘要”属性提供。所以改变

local_entry.update_attributes(content: entry.content, author: entry.author, url: entry.url, published: entry.published)

local_entry.update_attributes(content: entry.summary, author: entry.author, url: entry.url, published: entry.published)

然而,NewsFeed 是非常善变的东西。所以你不应该依赖单一属性的存在。

看看你的show.html.erb

<%= @entry.content.html_safe %>

例如,您可以使用安全导航运算符

<%= @entry&.content&.html_safe %>

或通知用户,不存在任何内容

<% unless @entry.content.nil? %>
    <%= @entry.content.html_safe %>
<% end %>
于 2017-01-14T20:15:49.780 回答
0

好的。我发现问题出在哪里。我克隆了你的项目并启动了。显然,您show.html.erb的提要页面与文章中的页面不同,这就是您无法访问条目的原因:

的 =>来自文章

如果您想首先查看条目,请创建新的提要,包括名称和描述,例如为每个提要添加这些链接:

http://epijobs.com/rss.xml

http://feedjira.com/blog/feed.xml

当您完成添加提要后,从您的终端在根应用程序中运行cd lib/task并最终运行:bundle exec rake sync:feeds正如文章中提到的:

rake 任务循环访问存储在数据库中的所有 Feed,并为每个 Feed 获取最新内容。从那里,循环遍历新条目,在数据库中创建或更新它。我们每次都会更新以跟上源内容的任何变化。

现在,例如,如果您转到下面的此链接,或通过链接显示第一个提要:

http://localhost:3000/feeds/1/entries

您应该能够看到 feed id 1 的所有条目。

我希望它有所帮助。

于 2017-01-14T14:12:28.667 回答