在Rails中放置泛型方法的位置?

时间:2014-11-23 23:41:24

标签: ruby inheritance ruby-on-rails-4

我需要加载图标以便在主布局的侧边栏中使用。所以我需要的方法必须

  1. 将图标路径加载到变量
  2. 使用此变量将每个图标的路径加载到一个数组@icons_paths
  3. 通过(haml)
  4. 之类的内容渲染所有图标
      

    @ icons_paths.each do | i_p |
           。有些-BS级
             .A-诺特尔级
               link_to image_tag(i_p,alt:""),some_path

    这可能不应该是一个视图,因为它逻辑太重,或者我错了? 而且我喜欢侧栏是一个局部的,就像页眉和页脚一样。

    我想让这段代码可以重复使用,所以问题是我在哪里放这些方法以及为什么?我无法将它们放入任何特定的控制器或模型中。

    PS。对不起格式化,我用4个空格缩进代码 - 没有效果。

2 个答案:

答案 0 :(得分:1)

我认为部分内容适用于该内容,但如果确实希望将其存储在除局部之外的其他位置,则在{{中定义辅助方法 1}}(或app/views/helpers/application_helper.rb):

foo_helper.rb

在您的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

答案 1 :(得分:1)

我认为在这种情况下最好的做法是将方法代码放在资源的帮助文件中,然后从视图或部分调用帮助程序,即使逻辑不是很多,也不要将它放在视图中文件。因此,如果您的资源名称是“事件”,它将是这样的:

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

你只需在你的视图/部分中调用它:

# app/views/events/view_name.html.haml
%aside
  = method_name