在Rails中创建主观视图的好方法是什么?

时间:2014-03-19 10:16:49

标签: ruby-on-rails model-view-controller view

我想知道什么是Rails Way™来构建一个“主观”视图,即根据提供的参数更改输出的视图。

例如,考虑以下人为的案例:

用户在博客应用中要求article。在请求中,她发送了参数time_zone=(-)1,表示她的时区为-1。应用程序应该接受该参数,并在输出中返回文章和创建该文章的时间 - 将转换为她的时区

这种服务器端处理方法的基本原理是,更改客户端视图很容易,特别是如果通过暴露的(移动)api访问rails应用程序。 (请注意,使用客户端脚本等处理前面提到的情况没有问题,但我想避免这种情况。)

不知何故,我觉得这很容易属于model,如果不是params在那里不可用的话。我想这是有原因的。从我的观点来看,Controller绝对不是坚持这一点的地方。

问题是:我应该在view

中填写此逻辑

1 个答案:

答案 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的子类的任何控制器都将具有此功能