首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在rails中过滤集合

如何在rails中过滤集合
EN

Stack Overflow用户
提问于 2016-10-20 22:48:07
回答 2查看 218关注 0票数 0

我是Rails的新手,我正在尝试通过它们的一个属性来过滤我数据库中的动物。我读到过,我可以通过控制器中的一个作用域,并通过URL上的一个参数来访问它,但我认为这对我不起作用,因为我使用循环来创建HTML。

有没有办法将过滤器添加到我正在使用的集合中(@animals)?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<% @animals.each do |animal| %>
  <li>
    <a href="#">
      <%=link_to animal.ncommon, animal %>
    </a>
  </li>
<% end %>

我希望我的问题已经说清楚了。谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 23:13:38

因此,最佳实践是将scope移动到模型中,而不是控制器中。下面是一个例子。(请注意,这可能会根据您的文件结构和名称而变化)。

在这里,我将按类型过滤动物。假设类型1和类型2。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#model app/models/animal.rb
class Animal < ActiveRecord::Base
  scope :by_type, -> (ty) { where(type: ty) }
end

#controller app/controllers/animals_controller.rb

class AnimalsController < ApplicationController
  ... other code

  def index
    # calls the by_type method/scope in the Animal model
    # filter the records and assignes them to @animals varaible
    @animals = Animal.by_type(params[:type])
  end

  ... other code 
end

然后你可以在视图中使用你的循环。当您想要过滤时,可以使用一个参数调用索引操作

例如http://localhost:3000/animals?type=1

因此,我们的想法不是在循环内部进行过滤,而是将过滤后的结果传递给@animals变量。

票数 0
EN

Stack Overflow用户

发布于 2016-10-21 15:32:25

我刚刚找到了一个可以在循环中使用的解决方案。我改变了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<% @animals.each do |animal| %>

至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<% @animals.where("promo > ?", 0).each do |animal| %>

在这里,我得到了所有的动物,其促销大于零。

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40165722

复制
相关文章
分段错误
首先通过 ulimit命令 查看一下系统是否配置支持了 dump core 的功能。通过
JNingWei
2018/09/28
1.6K0
Fortran知识 | 代码错误(数组越界)
如图所示,提示为: Subscript #1 of the array INDEX has value 61 which is greater than the upper bound of 60 比
fem178
2018/04/08
4.5K0
Fortran知识 | 代码错误(数组越界)
vector subscript out of range数组下标越界错误「建议收藏」
在使用vector二维数组时,产生 vector subscript out of range 错误,检查之
全栈程序员站长
2022/11/10
2.1K0
string对象下标越界
这是一个小问题,原因是我自己把string当成了一个无穷大的数组,string中的元素可以无穷多,但是这并不能代表可以将他当成无穷大数组,string下标的取值范围是大于等于0,并且小于size(),超过这个界限会出现访问越界错误,所以我们对string实行下标访问,一般用来读取,修改string的值,并不常用来赋初始值。
全栈程序员站长
2022/11/09
9190
[译] SIGSEGV:Linux 容器中的分段错误(退出代码 139)
SIGSEGV,也称为分段违规或分段错误,是基于 Unix 的操作系统(如 Linux)使用的信号。它表示程序尝试在其分配的内存之外进行写入或读取,由于编程错误、软件或硬件兼容性问题或恶意攻击(例如缓冲区溢出)。
CS实验室
2022/08/01
8.4K0
[译] SIGSEGV:Linux 容器中的分段错误(退出代码 139)
C++核心准则SL.con.3:避免越界错误
Read or write beyond an allocated range of elements typically leads to bad errors, wrong results, crashes, and security violations.
面向对象思考
2020/10/30
6550
C++核心准则SL.con.3:避免越界错误
80386的分段机制、分页机制和物理地址的形成
注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。
bear_fish
2018/09/20
1.1K0
80386的分段机制、分页机制和物理地址的形成
80386的分段机制、分页机制和物理地址的形成
s1mba
2018/01/03
1.4K0
80386的分段机制、分页机制和物理地址的形成
x86保护模式下的内存分段的地址映射
正是由于在实模式下直接对物理内存进行读写,非常不安全,所以诞生了新的内存分段的映射方式,其目的就是对物理内存进行保护,而对内存进行保护需要注意的是一下三点: 1.内存的起始地址。 2.内存的长度。 3.内存的权限信息。
lexingsen
2022/02/25
6580
x86保护模式下的内存分段的地址映射
Python列表边遍历边删除,怎么用才不报越界错误呢?
IDEA 强大的自动代码补全功能快捷键 Tab,代码标签输入完成后,按Tab,生成代码。
睡魔的谎言
2020/11/12
2K0
数组越界为什么没有出错
数组越界 在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 那什么是数组? 首先,我们应该知道数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。(下标通常从0开始算起:0、1、2、…n。) 组成数组的各个变量称为数组的
编程范 源代码公司
2018/04/18
2.1K0
数组越界为什么没有出错
数组访问越界_数组越界会导致什么问题
所谓的数组越界,简单地讲就是指数组下标变量的取值超过了初始定义时的大小,导致对数组元素的访问出现在数组的范围之外,这类错误也是 C 语言程序中最常见的错误之一。
全栈程序员站长
2022/11/11
1.6K0
Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]'的解决方法
从年初开始准备考研,已经很久没有更新自己的博客了。假期帮学校搞服务器,遇到了一个有趣的问题,记录一下吧。
p4nda
2023/01/03
2.4K0
Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]'的解决方法
分段函数 python
有一个函数 y={ x      x<1 | 2x-1   1<=x<10 \ 3x-11  x>=10
叶茂林
2023/07/30
1300
x86体系早期的实模式下的内存分段的地址映射
实模式:程序员可以直接在物理地址上进行编写程序,此时还没有操作系统进行内存的管理。
lexingsen
2022/02/25
4760
【分段传输】c#使用IAsyncEnumerable实现流式分段传输
    在使用SSE的时候,前端可以实现流式传输,但是有个问题就是这是一个独占的连接,相当于如果你不手动关闭连接,就会一直请求,一直连接调用接口,而且发送的数据格式也是按照定义好的协议来,而使用c#自带的IAsyncEnumerable也可以实现流式传输,不过返回的数据是在之前返回的基础上进行累加,需要自己做处理,我的例子是使用的是ajax来实现,群友有提供了fetch的实现代码,接下来我们看看c#IAsyncEnumerable实现传输的ajax方案和fetch的代码吧。
陈显达
2023/10/23
4230
【分段传输】c#使用IAsyncEnumerable实现流式分段传输
数列分段题目
问题描述 试题编号: 201509-1 试题名称: 数列分段 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段? 输入格式   输入的第一行包含一个整数n,表示数列中整数的个数。   第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。 输出格式   输出一个整数,表示给定的数列有多个段。 样例输入 8 8 8 8 0 12 12 8 0 样例输出 5 样例说明   8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。 评测用例规模与约定   1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。
geekfly
2022/08/11
6340
【JavaSE专栏28】数组下标能越界?越界了如何处理?
本文对 Java 中数组下标越界的概念进行了介绍,讲解了下标越界问题产生的原因,以及如何防范数组下标越界问题。
Designer 小郑
2023/08/02
7240
【JavaSE专栏28】数组下标能越界?越界了如何处理?
1019. 分段函数
1019. 分段函数 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制  题目描述 编写程序,计算下列分段函数y=f(x)的值(输入数据为浮点数,
attack
2018/04/12
1.7K1
1019. 分段函数
Heap-Unsortedbin+越界写
存在system("cat flag")函数,且当控制 v3 为 4869同时控制 magic 大于 4869,就可以得到 flag 了
偏有宸机
2021/04/01
5870
Heap-Unsortedbin+越界写

相似问题

strlen:地址越界导致分段错误

30

分段错误:C中指针的地址越界

20

访问越界内存无分段错误

40

文件指针中的地址越界错误

10

CUDA地址越界

11
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文