ruby-on-rails - 如果 rails html.erb 中的每个条件中的任何一个为真,如何仅显示一次 <p>

标签 ruby-on-rails ruby each

在我的 html.erb 文件中:

<% @user.relationships.each do |relationship| %>
  <% if relationship.status == "requested" %>
    <p>You have friend requests from: </p> 
    <%= User.find(relationship.followed_id).name %>

问题是我只想显示

你有 friend 请求来自:

如果有任何匹配项,一次,而目前它每次都会显示 status == "requested".

最佳答案

因为您似乎加载了所有对象,所以让我们在 ruby​​ 中执行此操作,否则应该使用范围来完成。

在你的模型中:

def requested?
  status == 'requested'
end

在你的 Controller 中:

@relationships = @user.relationships.includes(:followed)
@requested_relationships = @relationships.select &:requested?

在你看来:

<% if @requested_relationships.any? %>
  <p>You have friend requests from: </p> 
    <% @requested_relationships.each do |relationship| %>
       <%= relationship.followed.name %>

编辑以防止 n+1 查询

关于ruby-on-rails - 如果 rails html.erb 中的每个条件中的任何一个为真,如何仅显示一次 <p>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205928/

相关文章:

ruby-on-rails - Ruby on Rails - 使用来自 JSON(样式)数组的数据

javascript - 如何在每个循环中等待一个 promise ?

javascript - 在博客文章列表中移动动态 div

java - Ruby on Rails 与 jRuby

ruby-on-rails - 来自 Michael Hartl 的 RoR 教程第 11 章关注用户的 Rspec 方法 'be_following'

ruby-on-rails - 在Rails中将自定义ID用于check_box_tag

javascript - 在 WordPress 中的“操作数 a”中获取 "TypeError: invalid '

ruby-on-rails - 使用 Ruby on Rails 根据时间间隔发送电子邮件

ruby - 如何根据标题查找并单击对象?

ruby - 导轨 : submit Ajax form via anchor click