通常,控制器位于表示层,从模型中获取数据并发送到view
。
现在,我的控制器获取数据,但我需要将格式转换为可在视图上使用的javascript样式。例如,我有一个X
列表和一个Y
列表,我需要创建两种可以在视图中直接使用的表。所以我需要一个名为create_table X Y
的方法,例如:
def create_table X Y
@table1 = .....
@table2 = .....
end
并且视图中使用了@table1
和@table2
。
所以我的问题是,在哪里放这个功能?
在控制器中?我认为控制器中的大部分方法都意味着与特定视图相关的操作。
在私人控制器中?我在控制器中看到,有set_XXX
,XXX_params
这些方法是私有的,如果我把方法放在这里,方法中的实例可以直接访问视图吗?
任何人都可以帮助我吗?谢谢!
答案 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中放置代码片段的位置: