Ruby on rails 在Rails中,如果只有响应主体发生变化,我是否应该创建一个新的控制器动作?

Ruby on rails 在Rails中,如果只有响应主体发生变化,我是否应该创建一个新的控制器动作?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在重构一个具有多个视图的应用程序,这些视图利用单个控制器操作处理相同数据的不同方面(表格、日历、另一个日历、文件导出) 目前,该操作使用参数和条件从4个响应中选择一个,但实际数据对所有4个响应都是通用的 这种情况有一般做法吗?看起来最简单的方法是将此操作分成4个操作,并使用过滤器和私有方法保持其干燥。我同意你的观点 把它们都放在一个动作里其实并不那么干。处理带条件的参数、准备模板名称、准备视图中的查询字符串,这些都需要与拆分操作相比不必要的代码 另一个缺点是过滤器和操作消息。拆分为多个操作时

我正在重构一个具有多个视图的应用程序,这些视图利用单个控制器操作处理相同数据的不同方面(表格、日历、另一个日历、文件导出)

目前,该操作使用参数和条件从4个响应中选择一个,但实际数据对所有4个响应都是通用的


这种情况有一般做法吗?看起来最简单的方法是将此操作分成4个操作,并使用过滤器和私有方法保持其干燥。

我同意你的观点

把它们都放在一个动作里其实并不那么干。处理带条件的参数、准备模板名称、准备视图中的查询字符串,这些都需要与拆分操作相比不必要的代码

另一个缺点是过滤器和操作消息。拆分为多个操作时,
action\u name
不同,则可以发送不同的消息


例如,我有一个应用程序,它为一个模型提供了
vote
方法。我最终使用了
投票表决
投票表决
,因为只有登录用户才可以投票表决,然后正确的操作名称可以发送到CanCan。

其他简单的方法可以是为您的视图设置标准化的文件名,如marketing\u tabular.html、marketing\u calendar.html、,marketing_other_calendar.html并在不带条件的情况下呈现它们,如果已知类型
render“marketing_#{params[:type]}”
else render 404。