ruby-工具方法的定义、使用

发表于:,更新于:,By Sally
大纲
  1. 1. 先说说接触到现在的理解
    1. 1.1. 下面,有很多我感觉,深入理解后再补充
  2. 2. 在models/xxx.rb中定义方法
  3. 3. 在helper/xxx.rb中定义方法
  4. 4. 在libs/下面定义方法
    1. 4.1. 可以定义class
    2. 4.2. 也可以定义module

先说说接触到现在的理解

下面,有很多我感觉,深入理解后再补充

在models/xxx.rb中定义方法

  • 在module中定义的方法,可以在controller 以及 view 中调用

  • 我感觉:在module中定义的方法,就像是find where方法是属于某个model的,所以这样子调用: Householder.method

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 # 该controller 自己的方法
go_method # 调用的application.rb中的方法
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一下