2012-04-04 217 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對象的數組。