gpt4 book ai didi

html - 循环复制内容

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:12 24 4
gpt4 key购买 nike

出于某种原因,下面 else 语句中的推文重复了,我不明白为什么。

如果推文包含该短语,它们将收到经过编辑的 div。如果推文不包含该短语,则它们应该有常规文本。但是,如果推文不包含该短语,则这些推文会出于某种原因出现两次。

这是否与循环的设置方式有关?

<section id="tweets">
<ul>
<% tweet = @tweets.each do |tweet| %>
@<%= tweet.user.screen_name %>
<%= image_tag(tweet.user.profile_image_url) %>

<% current_user.blockedshows.each do |blockedshow| %>
<% blockedshow.phrases.each do |phrase| %> </br>
<% if tweet.text.include?(phrase.text)%>
<li><%= link_to check_if_redacted(tweet.text), "https://www.twitter.com/#{tweet.user.screen_name}" %></li>
<% else %>
<li><%= link_to tweet.text, "https://www.twitter.com/#{tweet.user.screen_name}" %></li>

<% end %>
<% end %>
<% end %>

最佳答案

内部循环对每个 blockedshow 中的每个编辑短语执行一次,这将复制每个短语的推文输出。尝试使用 any?一次检查所有短语的推文,并发出正确的 <div>基于该结果:

<% if current_user.blockedshows.flat_map(&:phrases).flatten.any? { |phrase| tweet.text.include? phrase.text } %>
<!-- Tweet contains at least one blocked phrase. -->
<li><%= link_to check_if_redacted(tweet.text), "https://www.twitter.com/#{tweet.user.screen_name}" %></li>
<% else %>
<!-- Tweet contains no blocked phrases. -->
<li><%= link_to tweet.text, "https://www.twitter.com/#{tweet.user.screen_name}" %></li>
<% end %>

该测试变得有点困惑,因此这是将功能重构为辅助方法的一个很好的候选者。在这个 View 的助手中:

def is_redacted? tweet
@phrases ||= current_user.blockedshows.map(&:phrases).flatten.map(&:text)
@phrases.any? { |phrase| tweet.text.include? phrase }
end

然后更改if在 View 中:

<% if is_redacted? tweet %>

关于html - 循环复制内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com