ruby-on-rails - 如何从rails中的多个模型中选择数据
问题描述
我有三个模型 project_manager、project_director 和 human_resource,每个模型都有一个状态布尔字段,如果这三个模型的布尔值为 true,我如何在 rails 中打印一些东西。目前我正在通过这样做访问模型中的数据-
<% if project_site.project_managers.empty? %>
<td class="pending fi-eye"><%= " Pending" %></td>
<% else %>
<% project_site.project_managers.each do |project_manager| %>
<% if project_manager.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% elsif project_manager.status == true %>
<td class="approved fi-check"><%= " Approved" %></td>
<% end %>
<% end %>
<% end %>
<% if project_site.project_directors.empty? %>
<td class="pending fi-eye"><%= " Pending" %></td>
<% else %>
<% project_site.project_directors.each do |project_director| %>
<% if project_director.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% elsif project_director.status == true %>
<td class="approved fi-check"><%= " Approved" %></td>
<% end %>
<% end %>
<% end %>
<% if project_site.human_resources.empty? %>
<td class="pending fi-eye"><%= " Pending" %></td>
<% else %>
<% project_site.human_resources.each do |human_resource| %>
<% if human_resource.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% elsif human_resource.status == true %>
<td class="approved fi-check"><%= " Approved" %></td>
<% end %>
<% end %>
<% end %>
如果所有这三个模型状态值都为真,我想打印批准我如何在 Rails 中做到这一点?
解决方案
创建一个辅助方法并输入以下代码:
def check_resource_status(project_site, resources)
statuses = project_site.send(resources.to_sym).pluck(:status)
statuses.all? ? true : false
end
def status_container(status)
content_tag :div, class: ['sample'] do
status_label = status ? 'Approved' : 'Rejected'
default_class = status ? 'fi-check' : 'fi-x'
status_class = [default_class, status_label.downcase]
concat content_tag(:label, status_label, class: status_class)
end
end
从您的视图文件中:
status_container(check_resource_status(project_site, 'human_resources'))
status_container(check_resource_status(project_site, 'project_directors'))
status_container(check_resource_status(project_site, 'project_managers'))
推荐阅读
- javascript - angular.isUndefined() 函数突然工作
- javascript - Vuetify2中可扩展表内的数据对齐
- javascript - 如何使用 javascript 验证 ical ( iCalendar ) 文件是否有效?
- c++ - 在 Eigen 中置换矩阵的列
- leaflet - 如何以编程方式开始拖动标记(传单)
- jquery - Jquery/Ajax 未正确发送序列化数据
- java - 如何将 ArrayList 从 Activity 发送到另一个?
- tfs - 在 TFS 2015 构建中找不到 SourceFolder
- firebase - 无法更改默认项目以在 Firebase 托管上部署我的项目
- javascript - 使用 react-native 仅禁用嵌套活动文本框中的发送按钮