将转换器方法放在轨道上的红宝石

时间:2015-09-28 04:22:25

标签: ruby-on-rails ruby model-view-controller architecture

通常,控制器位于表示层,从模型中获取数据并发送到view

现在,我的控制器获取数据,但我需要将格式转换为可在视图上使用的javascript样式。例如,我有一个X列表和一个Y列表,我需要创建两种可以在视图中直接使用的表。所以我需要一个名为create_table X Y的方法,例如:

def create_table X Y
    @table1 = .....
    @table2 = .....
end

并且视图中使用了@table1@table2

所以我的问题是,在哪里放这个功能?

在控制器中?我认为控制器中的大部分方法都意味着与特定视图相关的操作。

在私人控制器中?我在控制器中看到,有set_XXXXXX_params这些方法是私有的,如果我把方法放在这里,方法中的实例可以直接访问视图吗?

在助手中?我看到有些人把这个方法放在这里并在控制器中包含了帮助器,但据我所知,helper中的方法只能被视图使用。

任何人都可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

通常,你把这种“助手”放在lib文件夹上,如:'。/ lib / my_parser.rb'

此外,你可以在宝石中改变一堆逻辑。

一些参考: http://blog.codeclimate.com/blog/2012/02/07/what-code-goes-in-the-lib-directory/

答案 1 :(得分:0)

在Rails中,遵循的典型约定是将Models视为用于检索和修改数据库中信息的类,将Controllers视为用于基于http请求参数构建实例变量的类并调用Model方法,并将Views视为演示模板,用于显示存储在控制器创建的实例变量中的信息。

有了这种心态,你在create_table方法中投球的东西肯定会存在于Rails' MVC架构,不在控制器中。

根据此create_table方法的复杂程度,您可以使用视图部分或视图帮助方法。

查看助手

View帮助方法在app/helpers/my_helper.rb下的模块中定义。

视图助手的体面写作:http://www.rails-dev.com/custom-view-helpers-in-rails-4

查看部分

视图部分被定义为views文件夹下的模板,并且文件名以下划线为前缀,例如app/views/some_folder/_my_partial.html.erb

滑轨'部分指南:http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

这篇文章很好地解释了在Rails中放置代码片段的位置:

http://codefol.io/posts/Where-Do-I-Put-My-Code