我刚刚开始使用Rails并且最近关注了Sitepoint guide to building an RSS Feed app。我逐字按照说明操作,但收到错误undefined method 'html_safe' for nil:NilClass
。我查看了数据库,似乎Feedjira没有将content
或author
属性解析到数据库中。
快速谷歌之后,我发现Github页面上的以下问题#178和#176的日期可以追溯到8月13日,但鉴于这一重大问题导致我感到惊讶,因为它没有。在我的代码中可能会出现错误here,但我已经检查过,并且认为不是。
有谁知道我做错了什么?我已根据Issue #176中的建议更改了feedjira文档中的self.feed_classes,但它仍然没有提取任何内容。
答案 0 :(得分:1)
RSS和Atom Feeds不提供内容属性。内容'提供为'摘要'属性。所以改变
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)
然而,NewsFeeds是非常易变的事情。所以你不应该依赖单一属性的存在。
查看您的show.html.erb
<%= @entry.content.html_safe %>
例如,您可以使用安全导航操作符
<%= @entry&.content&.html_safe %>
或告知用户,没有内容
<% unless @entry.content.nil? %>
<%= @entry.content.html_safe %>
<% end %>
答案 1 :(得分:0)
行。我找到了问题所在。我克隆了你的项目并开火了。显然,Feed中的show.html.erb
页面与文章中的页面不同,这就是您无法访问条目的原因:
Yours =&GT; From the article
如果您想查看条目,请先创建包含姓名和说明的新Feed,例如为每个Feed添加以下链接:
http://feedjira.com/blog/feed.xml
完成添加Feed后,从root应用中的终端运行cd lib/task
,最后运行:bundle exec rake sync:feeds
,如文章中所述:
rake任务循环遍历数据库中存储的所有Feeds 获取每个内容的最新内容。从那以后,循环通过 新条目,在数据库中创建或更新它。我们正在更新 每次都要跟上源内容的任何变化。
现在,如果您转到下面的链接,或者通过链接显示第一个Feed:
http://localhost:3000/feeds/1/entries
您应该能够看到Feed id 1的所有条目。
我希望它有所帮助。