我是Rails的新手,只是想知道何时将代码放入Helper而不是将代码放入模型中。
是否有“经验法则”可以这么说呢?
答案 0 :(得分:27)
如果您在视图(模板)中工作,则需要使用帮助程序,并且需要构建一个复杂的HTML,例如<table>
。或者,如果您想要更改一些未连接到数据库的演示数据。
def truncate_html( html, options = {} )
options[:length] = 35 unless options[:length]
truncate( strip_tags( html ), options )
end
在使用数据库对象时使用模型,并且希望简化业务逻辑。
def one_day?
start_date.to_s[0,9] == end_date.to_s[0,9]
end
以下是指南中的帮助:http://guides.rubyonrails.org/form_helpers.html
这是模型:http://guides.rubyonrails.org/active_record_querying.html
答案 1 :(得分:6)
当帮助程序创建的代码仅在视图中显示时,最好使用帮助程序。例如,如果您想要有帮助创建HTML链接的方法,那么它们应该放在帮助器中:
def easy_link user
link_to(user.name, user)
end
如果您的代码是业务逻辑,那么它应该放在您的模型中。您还应该在模型中放置尽可能多的业务逻辑,不要在视图和控制器中使用此代码。例如,如果您要处理订单,那么该代码应该放在模型中:
def process
raise NotReadyToProcess unless ready_to_process?
raise NotValidPaymentDetails unless valid_payment_details?
process_payment
end
答案 2 :(得分:3)
助手应该只包含视图的逻辑
模型应该只包含与建模对象相关的逻辑,从不与执行视图的事务相关