2013-04-04 42 views
0

我有一個模型,物品,我想在兩列顯示。它看起來像each_slice將拆分數組,但我不知道如何應用它。當我嘗試在我看來使用each_slice時,我無法使其工作。使用Each_Slice使用Rails查看

在我的控制器:

@articles = Article.order("title ASC") 

在我看來,我想替換:

<% @articles.each do |article| %> 

與此:

<% @articles.each_slice((@articles.size/2.0).ceil) { |slice| puts slice } if @articles.size > 0 do |article| %> 

使用的代碼從這樣的回答: RoR show elements in two columns

我試圖使文章標題,其中上半年在那張1列兩列,而下半場進入第2列(按標題字母順序排列)。有人可以幫助我瞭解我做錯了什麼嗎?

回答

0

目前尚不清楚是否意味着你要在兩個視覺列在您的輸出顯示文章的單個實例,或在兩列顯示條實例的列表。你的代碼會顯示後者,但是你的文本顯示前者。

假設是後者,你不應該使用一個表來顯示非表格數據,特別是如果你要使用兩列相同數據。而是使用一個有序列表和適當的CSS來操控跨兩列顯示,它可以處理各種根據您的需求的方式(inline-block的元素具有固定寬度和固定容器寬度將是一個非常和藹可親的方法) 。

如果您確實需要使用each_slice進行n次迭代,則您需要檢查each_slice的文檔,以便您不會像在此處那樣將錯誤的參數傳遞給它。您似乎想要將文章數組按順序分爲兩列(即它們顯示爲1和2水平對齊),因此您只需撥打@articles.each_slice(2) { |(article_a, article_b)| article_a.name, article_b.name }即可。

鏈接的答案會以您的標記沒有配備處理的方式拆分數據,傳遞兩個未指定長度的數組,基本上分成兩半。然後,您可以遍歷每個結果列表以顯示它們,可能在單獨的包含元素中。

+0

謝謝。對不起,我試圖顯示兩列中的文章列表。我仍然不確定如何應用此功能。如果我把'@ articles.each_slice(2){|(article_a,article_b)| article_a.name,article_b.name}'在視圖中,我得到'語法錯誤,意外'}',期待tCOLON2或'['或'。' ... rticle_a.name,article_b.name}'。看來,我必須將切片數組設置爲變量,然後迭代它們,但我仍然不知道如何執行此操作。 – yellowreign 2013-04-04 20:17:58

+0

意思是將這些逗號分隔的文章放在方括號中,並將它們記爲數組。你熟悉Ruby嗎? – coreyward 2013-04-04 20:31:39

+0

這真的是一個CSS問題,而不是Ruby/Rails問題。你不需要'each_slice',或者分割數組。你絕對不需要一個「表」。 – coreyward 2013-04-04 20:32:16