我在这里,通过我的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
但我发现这个相当不优雅,我想保留代码DRY(即:我不希望我的演示者的方法充满'if xxx.blank?')
关于如何改进这个的任何想法?
非常感谢!