2012-04-04 229 views
-4

这段代码会做什么?这个rails代码是做什么的?

在此代码中使用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。这是我的一个插件的一些代码。

回答

3

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

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

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