如果我需要在rails中为我的控制器添加(特定于项目的)类,那么正确的放置方式/位置是什么?"包括"他们/那里.rb文件? (引用:不是ruby关键字包括)
我是rails的新手,并没有找到 正确的方法。 LIB听起来像更多的公共图书馆 - 我所学到的 - 在开发模式下默认不重新加载。
当然,我可以全部放入controler.rb,但是......
对我而言:
首先:没有规则,如果你记住(或像我一样学习)rails规则: NameOfCla - > name_of_cla(.rb)< - 不使用类作为清除词
按类别命名您的课程:
class ExtendCon #<--- not using controller here for clearence
....
将它放在文件extend_con.rb
中,请等待路径说明。如果你把你的课程命名为“MYGreatThing&#39;这将是&#39; m_y_great_thing&#39; (从不测试过),所以请避免使用chineese charachters
如果您的控制器使用
@letssee=ExtendCon.new
rails自己学习该类和文件(extend_con)。我仍然没有弄清楚是否需要重启服务器。 (第一次)
选择放置文件的路径:(我更喜欢Daves方式)app/myexten
或您喜欢的内容,使其成为&#39; app&#39;具体而且仍然不及标准的轨道事物&#39;
如果你不喜欢我(我把它放在app / ontrollers中)
把你选择的路径放进去
config/application.rb
喜欢(评论可以找到它)
# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/app/controllers)
config.autoload_paths += %W(#{config.root}/app/myexten)
这个适合我的所有模式,包括&#34;开发者&#34;而且我不需要把我自己的&#34; app / lib中的东西
答案 0 :(得分:0)
取决于。
我倾向于将显式使用的库代码(例如,实例化,注入等应用到app级工件中)放入app/xxx
,其中xxx
表示事物的“类型”,如{{1 },decorators
等
魔法的东西往往会在services
中结束,比如猴子补丁,建筑级工件等等。
任何地方的代码都可以添加到自动加载路径中,由初始化程序自动生成等等。
答案 1 :(得分:0)
Rails 4附带了一个名为Concerments的控制器的内部目录。你可以尝试使用它。
app/controlls/concerns
如果您有concerns/foo_bar.rb
,请按以下方式添加:
class FooController < ApplicationController
include FooBar
end
模型也有自己的关注目录。我发现这种方法很有用,它可以应用于Rails 3.您只需将目录添加到加载路径。