ruby-on-rails - 是否可以在 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
我很确定我的过滤器没有任何问题,所以我想知道在视图中放置这样的过滤器是否合法(如果这样的过滤器应该只放在控制器内)?
解决方案
您可以在视图中包含这样的代码,尽管您应该尽量避免在视图中包含逻辑并将其移动到控制器或助手中。这里的问题是活动记录关系是空的:
fs = MyModel.where(:Column1 => v1, :Column2 => v2) #=> #<ActiveRecord::Relation []>
fs[0] #=> nil
如果关系为空,您可以使用它try
来避免引发异常并返回nil
:
fs[0].try(:Column1) #=> nil
推荐阅读
- package - 使用 conda 安装 Orthofinder 失败
- javascript - 使用 Firestore 中的所有参考从集合中获取所有记录
- html - 具有特定 ID 的 Ajax 发布表单
- java - 为什么这个 lambda 可以在这里使用 Arrays.sort() 中的比较器
- python - 如何将类变量放入静态方法?
- javascript - 使用 base64 数据重复设置 img src 属性:URL 是基于服务器生成的图像进行动画处理的合理方式吗?
- reactjs - django阻止反应组件内的内容
- python - 如何在下面添加matplotlib图并在opencv中添加图像
- java - 传递 env 作为 JNI 函数的第一个参数
- android-studio - 插件给出错误但在插件中不可见插件“Android WiFi ADB”不兼容(仅在 IntelliJ IDEA 中支持)