我正在使用RSS阅读器,因此必须每x次检查是否有新文章到货。因此,我为使用javascript的人创建了一个函数,该函数先去控制器,然后去服务,再去控制器,并以js.erb视图结束。
我的第一个问题是js.erb文件存在编码问题。
第二个问题是,即使我没有数据,也无法在转到视图文件之前停止该功能。 js.erb然后出现错误,因为数据为零。
我的javascript函数:
var actu = setInterval(myTimer, 20000);
function myTimer() {
$.ajax({
url: '/fluxes/actu',
method: 'GET',
});
}
我的控制器动作:
def actu
@fluxes = Flux.all
@new_hash_article = Actualisation.new(@fluxes).call
if @new_hash_article.length >= 1
@new_hash_article.each do |key, value|
@flux = key
@article = value
respond_to do |format|
format.js
end
end
end
end
我的服务:
require 'rubygems'
require 'simple-rss'
require 'open-uri'
class Actualisation
def initialize(fluxes)
@fluxes = fluxes
end
def call
new_hash_article = {}
@fluxes.each do |flux|
url = flux.Url
rss = SimpleRSS.parse open(url)
@array_items = []
rss.channel.items.each do |item|
@array_items << item
end
@first = @array_items.first
calculator = 0
flux.articles.each do |article|
if article.Publication == @first.pubDate.to_s
calculator += 1
else
calculator += 0
end
end
if calculator == 0
article = Article.new
article.Title = @first.title
article.Description = @first.description
article.Url = @first.link
article.Publication = @first.pubDate
article.Lu = 0
article.flux_id = flux.id
article.save
new_hash_article[flux] = article
end
end
return new_hash_article
end
end
我的看法actu.js.erb
jQuery('#flux<%= @flux.id %>').append('<%= j render 'articles/show',
article: @article %>');
如果有用,我不知道,但这是我的文章/节目:
<li id="<%= article.id %>">
<div class="content">
<p><%= article.Title %></p>
<a href="<%= article.Url %>" target="_blank" data="<%= article.id
%>">Voir l'article <i class="fas fa-arrow-right"></i></a>
<div id="switchlu" class="display">
<% if article.Lu == 0 %>
<%= link_to "Afficher comme Lu", articles_marklu_path(id:
article.id), :remote => true %>
<% else %>
<p><i class="fas fa-check"></i>Lu</p>
<%= link_to "Afficher comme non Lu", articles_markpalu_path(id:
article.id), :remote => true %>
<% end %>
</div>
</div>
</li>
问题: [1]:https://i.stack.imgur.com/WTZBu.png
感谢您的时间和帮助:)