当“控制器”对象处理请求时,它查找与引入“动作”同名的public 实例方法。如果找
到了,那个方法就会被调用。如果没找到,但“控制器”实现了method_missing()方法,则
此方法会被调用,并传递“动作”的名字做为它的第一个参数,然后用一个空的参数列表做
第二个参数。如果没有方法被调用,“控制器”会查找与当前“控制器”和“动作”同名的
“模板”。如果找到,这个“模板”会被直接提交。如果这些都不行,则生成一个UnKonow Action
错误。
缺省地,“控制器”内的任何public 方法都可以被做为一个“动作”的方法调用。你可
以将现有的“动作”,通过标记它们为protected 或private 或者使用hide_action()来变成特殊方法。
class BlogController < ActiveRecord::Base
def create_order
order = Order.new(params[:order])
if check_credit(order)
order.save
else
# ...
end
end
hide_action :check_credit
def check_credit(order)
# ...
end
end
如果你发现你自己使用hid_action()方法,是因为你想在“控制器”间共享非“动作”
方法,你应该考虑用一个“帮助者”方法来代
到了,那个方法就会被调用。如果没找到,但“控制器”实现了method_missing()方法,则
此方法会被调用,并传递“动作”的名字做为它的第一个参数,然后用一个空的参数列表做
第二个参数。如果没有方法被调用,“控制器”会查找与当前“控制器”和“动作”同名的
“模板”。如果找到,这个“模板”会被直接提交。如果这些都不行,则生成一个UnKonow Action
错误。
缺省地,“控制器”内的任何public 方法都可以被做为一个“动作”的方法调用。你可
以将现有的“动作”,通过标记它们为protected 或private 或者使用hide_action()来变成特殊方法。
class BlogController < ActiveRecord::Base
def create_order
order = Order.new(params[:order])
if check_credit(order)
order.save
else
# ...
end
end
hide_action :check_credit
def check_credit(order)
# ...
end
end
如果你发现你自己使用hid_action()方法,是因为你想在“控制器”间共享非“动作”
方法,你应该考虑用一个“帮助者”方法来代