RoR:无法在简单导航中访问辅助方法

时间:2014-04-12 13:24:24

标签: ruby-on-rails ruby

我的项目中有一个帮助方法,用于评估名为'is_coach'的用户属性。以下方法适用于我的视图,并返回“true”或“false”,具体取决于当前用户是否为“coach”并登录:

class ApplicationController < ActionController::Base

  def is_coach?
    user_signed_in? ? current_user.is_coach : 'false'
  end

  protected

end

但是,当我在“简单导航”菜单中引用它时,它是未定义的:

undefined method `is_coach?'

我知道这应该继承它所在的视图可用的任何方法,这似乎是矛盾的。

#config/navigation.rb
SimpleNavigation::Configuration.run do |navigation|
  navigation.selected_class = 'current'
  navigation.items do |primary|
    primary.item :home, 'Home', '/'
    primary.item :home, 'Clients', '/clients', class: 'special', if: -> { is_coach? }
  end
end           

在我的视图中,以下代码调用此代码:

<%= render_navigation %>

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为应该在is_coach?文件中定义application_helper.rb方法,然后它随处可用。

答案 1 :(得分:0)

在rails helper中是一个不同的文件夹,因此,您应该提供以下代码:

application.html.rb

 def is_coach?
   user_signed_in? ? current_user.is_coach : 'false'
 end