我想知道什么是Rails Way™来构建一个“主观”视图,即根据提供的参数更改输出的视图。
例如,考虑以下人为的案例:
用户在博客应用中要求article
。在请求中,她发送了参数time_zone=(-)1
,表示她的时区为-1
。应用程序应该接受该参数,并在输出中返回文章和创建该文章的时间 - 将转换为她的时区。
这种服务器端处理方法的基本原理是,更改客户端视图很容易,特别是如果通过暴露的(移动)api访问rails应用程序。 (请注意,使用客户端脚本等处理前面提到的情况没有问题,但我想避免这种情况。)
不知何故,我觉得这很容易属于model
,如果不是params
在那里不可用的话。我想这是有原因的。从我的观点来看,Controller
绝对不是坚持这一点的地方。
问题是:我应该在view
?
答案 0 :(得分:1)
这个逻辑可能最适合控制器的子类。此子类可以定义一个过滤器方法,该方法设置适当的实例变量,然后在视图中引用它们。我链接到一个问题,这个问题与你的时区示例完全相同(尽管没有数字时区偏移,但想法是一样的)。另一个例子可能是基于URL参数的不同UI。在这种情况下,我可能会这样做:
class ApplicationController
before_filter :set_ui
private
def set_ui
if params[:ui] == 'blah'
@ui = 'blah'
else
@ui = 'thing'
end
true
end
end
然后在你看来你可以有这样的东西:
<%= render :partial => @ui %>
然后,您创建为ApplicationController
的子类的任何控制器都将具有此功能