Ruby on Rails - 从模型或控制器而不是视图将TRUE更改为ACTIVE

时间:2016-01-12 10:12:58

标签: ruby-on-rails model-view-controller haml

在我的companies数据库中,我有状态列 - boolean (真或假)。是否可以将 true 更改为有效&从模型或控制器而不是视图模板 false 非活动

这是我目前在视图模板中使用的内容:

- if company.status == true
  %p Active
- else
  %p Inactive

我觉得这些只是不必要的条件,我正在寻找一种更清洁的方式。

3 个答案:

答案 0 :(得分:0)

在公司模型中,定义一个这样的函数。

def get_status
  return self.status ? "Active" : "Inactive"
end

在您看来,您可以这样做。

<%= company.get_status %>

答案 1 :(得分:0)

  

是否可以将true更改为active&amp;从false到非活动状态   模型或控制器而不是视图模板。

是的可能

您可以在模型级别编写instance method来制作观看代码 DRY

以更抽象的方式跟随Harry Answer我们可以写!!!

def get_status
 status ? "Active" : "Inactive"
end

答案 2 :(得分:0)

以前答案的补充说明:在模型中加入视图关注点不是最佳做法 - 它违反了SRP。当然,对于那个小罪,你不会被闪电击中,但是你应该意识到这一点。

另一种方法是将这个基本逻辑保留在视图中,如同使用常见的单行:

%p= company.status ? "Active" : "Inactive"

或者最后把它放在帮手中:

%p= boolean_to_activity( company.status )

# ... in helpers/some_helper.rb

def boolean_to_activity status
  status ? "Active" : "Inactive"
end