2011-07-02 119 views
1

請注意,我對軌道很新,所以請不要太討厭我。Rails field_for混淆

我想有一個對象的2個不同的錶行的條目。據我所知,代碼看起來像這樣。

<%= form_for(@object) do |f| %> 
<table> 
    <tr> 
    <th> Col 1 </th> 
    <th> Col 2 </th> 
    <th> Col 3 </th> 
    <th> Col 4 </th> 
    <th> Col 5 </th> 
    <th> Col 6 </th> 
    <th> Col 7 </th> 
    </tr> 
    <tr> 
    <!-- entries 1-7 here --!> 
    </tr> 
    <tr> 
    <!-- entries 8-14 here --!> 
    </tr> 
</table> 
<% end %> 

但是,從我所知道的,使用類似<% fields_for(@object.entries) do |entry| %>力量我一次經歷所有這些磨片我真的只想做上半年比下半年。我知道每個對象總是有14個條目(每週1個,爲期2周),而且我希望看到它們是2行(每週1行)。任何想法如何去做這件事?

回答

0

您可以使用Enumerable中的#each_slice來迭代它們。喜歡的東西:

<%= form_for(@object) do |f| %> 
<table> 
    <tr> 
    <th> Col 1 </th> 
    <th> Col 2 </th> 
    <th> Col 3 </th> 
    <th> Col 4 </th> 
    <th> Col 5 </th> 
    <th> Col 6 </th> 
    <th> Col 7 </th> 
    </tr> 
    <% @object.entries.each_slice(7) do |arr| %> 
    <% arr.each do |obj| %> 
     <tr> 
     <!-- entries n-n+7 here --> 
     </tr> 
    <% end %> 
    <% end %> 
</table> 
<% end %> 
0

fields_for接受數組,所以你應該能夠只通過輸入你需要:

<% fields_for(@object.entries[0,7]) do |entry| %> 
    ... 
<% end %> 

甚至與each_slice(或in_groups_of)從回答上面結合起來:

<% @object.entries.each_slice(7) do |entries| %> 
    <% fields_for(entries) do |entry| %> 
    ... 
    <% end %> 
<% end %>