2014-11-23 17 views
0

我需要加載用於主佈局中側邊欄的圖標。所以,這些方法,我需要必須在Rails中放置泛型方法的位置?

  1. 加載圖標路徑到一個變量
  2. 使用此變量的每個圖標的路徑加載到一個數組@icons_paths
  3. 通過類似(HAML)
渲染的所有圖標

@ icons_paths.each do | i_p |
。有些-BS級
.A-諾特爾級
的link_to IMAGE_TAG(I_P,ALT: 「」),SOME_PATH

這可能不應該去到一個視圖,因爲它是邏輯太重了,還是我錯了? 而且我希望側邊欄是一個部分,就像頁眉和頁腳一樣。

我想使這個代碼可重用,所以問題是我在哪裏放這些方法,爲什麼?我不能將它們放入任何特定的控制器或模型中。

PS。對不起格式化,我縮進了4個空格 - 沒有效果。

+1

我把在部分。它看起來並不像那裏有很多邏輯?只需循環一個數組併爲每個元素輸出一些html? – 2014-11-24 01:16:51

回答

1

我認爲部分將用於該內容被罰款,但如果你真的要存儲在某個地方比部分其他,然後在app/views/helpers/application_helper.rb(或foo_helper.rb)定義helper方法

def clickable_icons 
    content = "" 
    @icons_paths.each do |i_p| 
    content << link_to(image_tag(i_p, alt: ""), some_path, {class: "some-bs-class a-nother-class"}) 
    end 
    content.html_safe 
end 

而在你app/views/some_view.html.haml

= clickable_icons 
1

我認爲在這種情況下,最好的做法是把你的資源的小時方法的代碼elper文件,然後從視圖或部分視圖中調用助手,即使邏輯不是太多,也不應將其放在視圖文件中。所以如果你的資源名稱是「事件」,這將是這樣的:

#app/helpers/events_helper.rb 
def method_name 
    # code goes here 
end` 

,你只要把它在你看來/部分:

# app/views/events/view_name.html.haml 
%aside 
    = method_name 
相關問題