我需要在布局/views/layouts/application.html.erb
上执行类似的操作:
<% if free %>
<!-- do something -->
<% end %>
但是,free
变量必须在部分或产生的视图上声明,而不是在控制器或模型中声明 - 这是一个可视化规则。
目前,我正在/controllers/welcome.rb
中执行以下操作:
def index
@free = true
end
关键是:这不是控制器的责任,然后我不觉得这样的事情好。
CentOS 6.5 with Rails 4.1。
答案 0 :(得分:1)
这不是控制器的责任,然后我感觉不到 这样的事情很好。
我明白。虽然您不应该在视图中声明变量,但这可能会变得混乱。想象一下,如果变量存在错误,您将查看所有设置变量以查找问题的视图。恕我直言,在ApplicationController中将它声明为帮助器会更好,这样所有视图都会定义您的变量,并且由您决定是否使用它。
class ApplicationController < ActionController::Base
helper_method :free
protected
def free
true
end
end
通过这种方式,您可以覆盖&#39;免费&#39;其他控制器中的方法,如果free的值应该不同。