我有一个 DateTime 类实例变量@current_year = DateTime.now.year
,我已将其设置为页脚部分。这个部分是在我的几个客户端页面上呈现的(以及在<%= render 'layouts/page_footer' %>
页面主体中的多个控制器上 - layout/application.html.erb 页面保留用于站点导航,因此格式不会在那里适应它。虽然我可以为它出现在控制器中的每个页面方法声明它,我会发现一些更干燥的东西。是否有一个地方可以定义我的时间变量以在我的布局组件中调用?
问问题
133 次
2 回答
1
您可以在 中添加一个set_year
操作ApplicationController
,例如:
class ApplicationController < ActionController::Base
private
def set_year
@current_year = DateTime.now.year
end
end
before_action
然后在您的相关控制器操作中调用它。就像是:
class FooController < ApplicationController
before_action :set_year, only: [:some_action, :another_action]
end
或者,重复 MrYoshiji 的评论,您可以current_year
在 中创建一个动作ApplicationController
,例如:
class ApplicationController < ActionController::Base
def current_year
@current_year ||= DateTime.now.year
end
end
在这种情况下,您可以current_year
在 partial 中使用而不是@current_year
. 然后,正如 Yoshiji 先生所说,如果那种东西漂浮在你的船上,你可以把它变成一个助手。就像是:
module ApplicationHelper
def current_year
@current_year ||= DateTime.now.year
end
end
我想,current_year
成为助手的好处是它可以让你的ApplicationController
. 我进一步认为,不利的一面是它(在某种程度上)混淆了current_year
行动的来源。同样,您必须考虑您的船浮动系数。
顺便说一句,@current_year
不是DateTime
. 这是一个Fixnum
。
于 2018-03-28T15:20:53.650 回答
1
您可以在 application_helper.rb 文件中创建一个方法并在您喜欢的任何地方使用它。
def current_year
@current_year = DateTime.now.year
end
于 2018-03-28T15:40:13.237 回答