我刚接触Rails,想知道何时应将代码放入Helper中,而不是放入Model中。
在这方面有什么“经验法则”吗?
我刚接触Rails,想知道何时应将代码放入Helper中,而不是放入Model中。
在这方面有什么“经验法则”吗?
如果您正在视图(模板)中工作,并且需要构建复杂的 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
这里是指南中的Helpers:http://guides.rubyonrails.org/form_helpers.html
还有Models:http://guides.rubyonrails.org/active_record_querying.html
当希望在视图中显示的代码由helper创建时,最好使用helper。例如,如果您想要编写帮助创建HTML链接的方法,则应将其放入helper中:
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
助手应该只包含视图逻辑
模型应仅包含与建模对象相关的逻辑,永远不涉及执行的事务或呈现的视图