我正在構建一個用戶模型與其他模型具有多個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?'。 –