2016-04-15 65 views
2

我在我的rails視圖中有信息,我只想顯示用戶是否輸入了數據庫中的所有個人詳細信息,例如姓名,街道和城市。我現在可以做到這一點:rails檢查表單是否完全填寫

if user.name && user.firstname && user.street && user.street 
# show stuff 
end 

但我不認爲這是非常優雅的「鐵軌方式」。有沒有更容易和更聰明的方法來做到這一點?

回答

3

您可以在模型類的html表單標籤和驗證中使用required。也跟隨鏈接: http://guides.rubyonrails.org/active_record_validations.html http://www.w3schools.com/tags/att_input_required.asp

在模型中

class User < ActiveRecord::Base 
    def has_required_fields? 
    self.name && self.first_name && self.address && .... 
    end 
end 

而在你的控制器

if user.has_required_fields? 
    # do whatever you want 
end 
+0

沒有。我想獨立於表單過濾信息。 – DonMB

+0

我有更新答案。現在檢查。 –

0

的 「軌道路」 將是瘦控制器,脂肪模型。因此,對於您的情況,您希望在User型號中創建一個方法,然後在控制器中使用它。

用戶模式

def incomplete? 
    name.blank? or firstname.blank? or street.blank? 
end 

用戶控制器

unless user.incomplete? 
    # Show stuff 
end 
0

模型:

ALL_REQUIRED_FIELDS = %w(name surname address email) 

def filled_required_fields? 
    ALL_REQUIRED_FIELDS.all? { |field| self.attribute_present? field } 
end 
在你的控制器

@user.filled_required_fields? 

如果所有字段都填充,則返回true,否則返回false。

看起來很優雅:)這是不是我想要做的