我刚遇到类似于http://www.ruby-forum.com/topic/216433
的问题我需要从helper访问控制器实例变量。
这是我所做的代码,但它不起作用。
控制器:
class ApplicationController < ActionController::Base
helper_method :set_background_type #for action only background setting
#for controller-wise background setting
def set_background_type(string)
@background_type = string
end
end
助手:
module ApplicationHelper
def background_type
@background_type || 'default'
end
end
布局:
<body class="<%= background_type %>">
答案 0 :(得分:3)
经过一番搜索。我从
获得了一个解决方案http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html
,控制器变为:
class ApplicationController < ActionController::Base
helper_method :set_background_type #for action only background setting
helper_attr :background_type
attr_accessor :background_type
#for controller-wise background setting
def set_background_type(string)
@background_type = string
end
def background_type
@background_type || 'default'
end
end
并从ApplicationHelper中删除该方法。 它适用于这种情况,但我仍然很好奇,
有没有办法在ApplicationHelper中访问方法的控制器实例变量?
答案 1 :(得分:0)
如果你正在使用erb模板,我猜你是,那么你需要使用erb语法来调用helper方法。你试过了吗?
<body class="<%= background_type %>">