ruby中的每个循环都不起作用

mta*_*tay 1 ruby ruby-on-rails

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

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

奇怪的问题是它只会经历一次这个循环!

params[:category] 应该是一系列的参数都属于类别标签,对吧?

这是使用控制器中的select标签生成的:

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

如果你看到什么是错的,请告诉我!

Dan*_*nne 6

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

logger.info(params[:category])
Run Code Online (Sandbox Code Playgroud)

这将适用于所有控制器.

但我建议你以不同的方式去做.根据您的方法,控制器将为所提供的每个类别调用一次数据库.它应该足以将它发送到find方法,如下所示:

@categories = Category.find(params[:category])
names = @categories.map(&:name).join
Run Code Online (Sandbox Code Playgroud)

如果find方法获取一个id数组而不仅仅是一个id,它将返回一个类别数组.