-4

这段代码会做什么?

在这段代码中使用 collect 的目的是什么?

如果不使用 collect 方法会发生什么?

<%= select_tag(isTemplate ? '__template__time_entry[][project_id]' : 'time_entry[][project_id]', 
               options_for_select(@projects.collect{|p| [ p.name, p.id ] }, 
                                 :selected =>  entry.nil? ? 0 : entry.project_id), 
               :onchange => 'projectChanged(this,' + @row.to_s() + ')', 
               :style=> 'width:150px' ) %>

当我执行此操作时,会显示错误“未定义的方法收集”。我在 linux 上使用 redmine0.8.2 和 rails2.0.2。这是我的一个插件中的一些代码。

4

1 回答 1

3

此代码显示带有选项的选择输入。

您的错误可能是由于@projects是 nil 且未定义。您尝试收集哪个是 Array 或 Hash 的方法,而您的变量是 nil。

您必须在控制器中使用数组或哈希定义它,但可能使用包含 Project 对象的数组。

于 2012-04-04T11:46:42.173 回答