我的Rails 4项目中有一个装饰器:app/decorators/course_decorator.rb
在内部course_decorator.rb
,我想定义一个在满足条件时将显示链接的方法。例如,我在做:
class CourseDecorator
def initialize(course)
@course = course
end
def view_button
if user_signed_in?
link_to "View", @course
end
end
我正在使用Devise gem进行用户身份验证,并且user_signed_in?
是Devise提供的帮助程序。
尝试view_button
在我的视图中使用该方法时,没有任何方法错误。错误是因为undefined method 'user_signed_in?' for #Course:0x007fcc7ccb8310
我认为这是由于装饰器正在user_signed_in?
对Course对象调用方法而发生的。user_signed_in?
在这种情况下,如何正确实施方法?
从Devise Wiki此处:
Devise包括一些功能规格的测试助手。为了使用它们,您需要在功能测试中包括Devise,方法是在代码底部添加以下内容
test/test_helper.rb file:
class ActionController::TestCase
include Devise::TestHelpers
end
如果您使用的是RSpec,则可以将以下内容放入名为spec / support的文件中
/devise.rb or in your spec/spec_helper.rb:
RSpec.configure do |config|
config.include Devise::TestHelpers, type: :controller
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句