0
我正在閱讀Learning Rails 3.我正在研究一個可以創建學生和獎勵的示例。一名學生擁有多個獎項並授予belongs_to學生。有關Learning Rails示例的代碼3
在app /視圖/獎勵/ _form.html.erb部分代碼看起來是這樣的:
<div class="field">
<%= f.label :student_id %><br />
<%= f.select :student_id, Student.find(:all).collect {|s| [s.name, s.id]} %>
</div>
書中解釋了這種代碼:
「這也正是收集方法它以塊爲參數({}),| s |是一種非常簡短的方式,表示Ruby應該遍歷學生集合並將每行放入一個名爲s的變量中。循環中,塊將返回一個包含在[和]中的數組,這些數組中的每一個將成爲選擇列表中的行,它們將有兩個值:第一個是stude的名稱nt ..該值將顯示給用戶。第二個是學生的id值,並且該值將從表單返回到服務器。「
我的問題是關於最後一句。爲什麼以及如何從窗體返回第二個值服務器?爲什麼不是第一個值?以及將數組[s.name,s.id]發送到collect方法的目的以及爲什麼需要這種收集方法?
謝謝, 邁克