我正在构建一个用户模型与其他模型具有多个has_many关系的rails应用程序。在一个视图中对多个实例变量使用if语句 - Rails
class User < ActiveRecord::Base
has_many :model_2s
has_many :model_3s
has_many :model_4s
end
然后,我创建一个配置文件页面,其中显示当前用户的每个模型的数据。我做这个使用一个单独的控制器 - profiles_controller.rb
在配置文件控制我的每个基于当前用户的这些模型的创建实例变量:
class ProfilesController < ApplicationController
@user = User.find(params[:id])
@model_2s = @user.model_2s.all
@model_3s = @user.model_3s.all
@model_4s = @user.model_4s.all
end
我则能够显示数据从这些实例变量中显示配置文件。我通过调用每种方法来做到这一点。
我现在想添加的功能是显示一些默认数据(如Lorem存有占位符文本)对于用户没有填写领域。
我的问题是,我无法弄清楚如何检查如果这些实例变量中的特定字段为空。
例如,我想沿着线的东西:
<% if @model_2s.field_1.empty? %>
<p>Lorem Ipsum</p>
<% else %>
<%= @model_2s.field_1 %>
<% end %>
然而,这给出了一个“未定义的方法‘field_1’......”的错误。
我知道如何检查@ model_2s.any?以确认实例变量本身存在,但我希望能够在下一级别进行条件检查 - 实例变量中的字段。
'@ model_2s'是一个枚举(数组)。你可以用'@ model_2s.empty?'测试它是否为空,或者你可以用'@ model_2s.first.field_1.blank?'(这里选中的第一个元素)测试一个特定的元素 – Baldrick
谢谢...不幸的是添加'后。第一个'我仍然得到相同的错误...“未定义的方法'field_1'...” – mgtcampbell
然后你的'@ model_2s'数组是空的。你首先必须检查是否有任何东西被发现,可能是通过做'if @ model_2s.empty? || @ model_2s.first.field_1.blank?'。 –