在 Rails 中创建主观视图的好方法是啥?
Posted
技术标签:
【中文标题】在 Rails 中创建主观视图的好方法是啥?【英文标题】:What's a good way to create subjective views in Rails?在 Rails 中创建主观视图的好方法是什么? 【发布时间】:2014-03-19 10:16:49 【问题描述】:我想知道构建“主观”视图的 Rails Way™ 是什么,即根据提供的参数更改输出的视图。
例如,考虑以下人为的案例:
用户在博客应用中请求article
。在请求中,她发送参数time_zone=(-)1
,以表明她的时区是-1
。然后应用程序应采用该参数,并在输出中返回文章和创建该文章的时间 - 转换为 她的时区。
这种服务器端处理方法的基本原理是,很容易更改客户端视图,尤其是在通过公开(移动)api 访问 rails 应用程序的情况下。 (请注意,使用客户端脚本等处理上述情况是没有问题的,但我想避免这种情况。)
不知何故,我觉得这很容易属于model
,如果不是因为params
在那里不可用。我想这是有原因的。 Controller
是,从我的角度来看,绝对不是坚持这个的地方。
问题是:我应该把这个逻辑塞进view
吗?
【问题讨论】:
看看this question 感谢@Slicedpan,感谢您的帮助。不幸的是,我对时区本身并不真正感兴趣。这只是我的例子。它可以是任何东西,真的。问题更多的是“在哪里”而不是“如何”。 写答案atm 【参考方案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
的子类的任何控制器都将具有此功能
【讨论】:
不错!谢谢 - 我没有那样想。 :)以上是关于在 Rails 中创建主观视图的好方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在没有索引视图的情况下,在 SQL Server 中创建复杂视图的最佳方法是啥?
使用以下数据库布局在 mysql 中创建视图的最佳方法是啥?