首页 > 解决方案 > 是否可以在 Ruby on Rails 中的视图内的模型上应用过滤器?

问题描述

是否可以在视图代码中的模型上应用过滤器:

我使用 axlsx 生成 Excel,并在我的myview.xlsx.axlsx文件中尝试了类似的内容:

fs = MyModel.where(:Column1 => v1, :Column2 => v2)
puts fs[0].Column1

我有一个错误

undefined method Column1 for nil:NilClass

我很确定我的过滤器没有任何问题,所以我想知道在视图中放置这样的过滤器是否合法(如果这样的过滤器应该只放在控制器内)?

标签: ruby-on-railsaxlsx

解决方案


您可以在视图中包含这样的代码,尽管您应该尽量避免在视图中包含逻辑并将其移动到控制器或助手中。这里的问题是活动记录关系是空的:

fs = MyModel.where(:Column1 => v1, :Column2 => v2) #=> #<ActiveRecord::Relation []>
fs[0] #=> nil

如果关系为空,您可以使用它try来避免引发异常并返回nil

fs[0].try(:Column1) #=> nil

推荐阅读