我在这里,带着我的 Rails 项目,这个问题让我印象深刻。对于我的用户配置文件,某些属性将为空白,我希望它们默认为特定值:如果未设置它们,我希望我的视图显示自定义消息并在其周围添加一个 CSS 类,如“空白”。
我正在使用 Presenter,但由于它的行为有点像 Helper,假设这些是辅助方法。
在我的助手中,我有类似的东西:
def professional_information
handles_not_set user.university, user.job do |university, job|
content_tag(:p, university.content, class: university.error) +
content_tag(:p, job.content, class: job.error)
end
end
handles_not_set
定义如下:
def handles_not_set(*objects)
o = []
objects.each do |object|
attr = OpenStruct.new
if object.blank?
attr.content = 'Not specified.'
attr.errors = ['blank']
else
attr.content = object
attr.errors = []
end
o << attr
end
yield *o
end
但我觉得这很不雅,我想保持代码干燥(即:我不希望我的演示者的方法充满'if xxx.blank?')
关于如何改进这一点的任何想法?
非常感谢 !