先说说接触到现在的理解
下面,有很多我感觉,深入理解后再补充
在models/xxx.rb中定义方法
1 2 3 4
   | class Householder < ActiveRecord::Base   def self.method   end end
   | 
 
在helper/xxx.rb中定义方法
在app/helpers/ 文件夹下,包含application.rb 以及 与controller下文件同名的rb文件
 
我感觉:定义在application.rb 文件夹中的方法,在整个项目中的controller,views中都可以使用,但在文件的开头需要添加include ApplicationHelper,
 
定义在与controller文件同名的rb文件中的,应用在相应的controller,view中使用时不需要include;
- 不难发现,在helper/ 文件夹下的文件中,都是些module,(这里还有个名词叫mixin)
 
1 2 3 4
   | module ApplicationHelper   def go_method   end end
   | 
 
- 所以,这些方法在controller中引用时,需要
 
1 2 3 4 5 6 7
   | class HouseholderController < ApplicationController   include ApplicationHelper
    def householders_method       go_method                 end end
   | 
 
- 在view 中引用时,引用与该controller 文件名相同的 helper文件时,是不需要include的,但是,如果提示没有方法,或者引用的是application.rb中的方法,就酱紫
 
1
   | <% include ApplicationHelper %>
   | 
 
在libs/下面定义方法
- 首先,定义在这里的方法,需要在config/application.rb 文件中应用一下
 
1
   | config.autoload_paths << Rails.root.join('lib')
  | 
 
可以定义class
1 2 3 4
   | class Person   def self.go_method   end end
   | 
 
1 2 3 4 5
   | # rb 文件中调用 Person.go_method
  # erb 文件中调用 <% Person.go_method %>
   | 
 
也可以定义module
1 2 3 4
   | module Person   def go_method   end end
   | 
 
1
   | 在rb文件中可以直接调用,需要include一下
   |