Ruby on rails ruby中的每个循环都不工作

Ruby on rails ruby中的每个循环都不工作,ruby-on-rails,ruby,Ruby On Rails,Ruby,我用Ruby编写了一个非常简单的each循环: params[:category].each do |i| cat = Category.find(i) string << cat.name end 如果你知道怎么了,就告诉我 使用视图中的某个位置查看发布参数的内容。如果循环运行一次,则类别中有一个条目 除此之外,循环似乎很好(字符串应该在之前初始化,我想您已经初始化了,因为您没有得到错误)。使用视图中的某个地方查看发布的参数的内容。如果循环运行一次,则类别中有一个条目 除

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

params[:category].each do |i|
  cat = Category.find(i)
  string << cat.name
end
如果你知道怎么了,就告诉我

使用视图中的某个位置查看发布参数的内容。如果循环运行一次,则类别中有一个条目

除此之外,循环似乎很好(字符串应该在之前初始化,我想您已经初始化了,因为您没有得到错误)。

使用视图中的某个地方查看发布的参数的内容。如果循环运行一次,则类别中有一个条目


除此之外,循环似乎很好(字符串应该在之前初始化,我想您已经初始化了,因为您没有得到错误)。

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

logger.info(params[:category])
@categories = Category.find(params[:category])
names = @categories.map(&:name).join
这将从所有控制器工作

但我建议你用另一种方式去做。通过您的方法,控制器将为提供的每个类别调用数据库一次。将其发送到find方法就足够了,如下所示:

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

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

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

logger.info(params[:category])
@categories = Category.find(params[:category])
names = @categories.map(&:name).join
这将从所有控制器工作

但我建议你用另一种方式去做。通过您的方法,控制器将为提供的每个类别调用数据库一次。将其发送到find方法就足够了,如下所示:

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

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

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

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

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

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

ps.params[:category]将正确地导致长度大于1。字符串有什么,以及您期望它有什么?ps.params[:category]将正确地导致长度大于1。字符串有什么,以及您期望它有什么?