[英]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.