繁体   English   中英

红宝石中的每个循环都无法正常工作

[英]each loop in ruby not working

我有一个用Ruby编写的非常简单的每个循环:

params[:category].each do |i|
  cat = Category.find(i)
  string << cat.name
end

奇怪的问题是,它只能在此循环中运行一次!

params[:category]应该是所有在类别标签下出现的参数数组,对吗?

这是使用控制器中的选择标记生成的:

<%=select_tag "category", options_from_collection_for_select(@category,"id" , "name"),:multiple => true, :class=>"bbFormSelect",:id=>"select_category", :name => "category" %>

如果您发现问题所在,请告诉我!

您始终可以通过手动记录变量的内容来检查其内容,如下所示:

logger.info(params[:category])

这将在所有Controller中起作用。

但我建议您以其他方式进行此操作。 使用您的方法,控制器将为每个提供的类别调用一次数据库。 将其发送到如下所示的find方法就足够了:

@categories = Category.find(params[:category])
names = @categories.map(&:name).join

如果find方法获取的是ID数组而不是ID,则它将返回类别数组。

在视图中的某处使用<%= debug params[:category] %>可以查看发布的参数的内容。 如果循环运行一次,则类别中只有一个条目。

除此之外,循环看起来还不错(字符串应该在初始化之前,我想因为没有错误,所以我已经初始化了)。

如果您希望Rails根据输入参数构建一个类别数组,请将输入的名称更改为category [],如下所示:

<%=select_tag "category", options_from_collection_for_select(@category,"id" , "name"),:multiple => true, :class=>"bbFormSelect",:id=>"select_category", :name => "category[]" %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM