Rails 检查条件的助手

Rails helper that to check conditional

我想知道检查视图的条件是否是 helper 的正确使用。

让我们看一个人为的例子:

助手

def free_to_subscribe(product)
  current_user.active_member? && product.on_discount?
end

查看

...
<% elsif free_to_subscribe(product) %>
  Free to subscribe!
<% end %>
...

我认为助手需要 return 在视图中显示一些内容。 return 布尔值的助手看起来有点异味。有什么想法吗?

我个人会把它放在模型中:

class User < ActiveRecord::Base
  def free_to_subscribe?(product)
    active_member? && product.on_discount?
  end
end

那么视图将如下所示:

...
<% elsif current_user.free_to_subscribe(product) %>
  Free to subscribe!
<% end %>
...

视图中的代码稍微多一些,但在我看来,这就像您在没有真正原因的情况下任意选择在助手中加入某些逻辑。