2011-03-17 52 views
9

您在哪里检查Ruby On Rails中不是模型属性(如page,per_page,sort_mode)的URL参数?在控制器或模型中?例如,当您执行更复杂的数据库查询时,您是否会检查参数并在控制器中设置默认值,然后执行MyModel.search(page, per_page, order, sort_mode, query),或者您会在模型内部设置验证并仅传递非操作参数MyModel.search(params)何处检查和验证Rails中的非模型参数

而你如何报告该参数回到视图?例如,sort_mode参数应该在排序方向上在视图上产生一个小箭头。你检查并清理params散列并从params中获取视图中的数据,或者你使用自己的实例变量吗?

回答

7

我倾向于在控制器中清理参数。

class ApplicationController < ActionController::Base 
    before_filter :sanitise_params 

    protected 

    def sanitise_params 
    # tidy up 
    # set defaults 
    end 
end 

模型声明其接口并由控制器以正确方式与他们交谈的良好习惯。这样你就可以清楚地分离你的图层。

查看帮手是有帮助的意见。这里是some examples作为ActionPack的ActionView的一部分。你可以把自己放在app/helpers