0

我在这里,带着我的 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?')

关于如何改进这一点的任何想法?

非常感谢 !

4

0 回答 0