在视图轨道中访问应用程序控制器

ove*_*low 3 ruby-on-rails ruby-on-rails-3

我在应用程序控制器中有一个动作

def is_customer_logged_in?
    !!session[:customer_id]
  end
Run Code Online (Sandbox Code Playgroud)

在我看来,我正在尝试像这样访问 application_controller 操作

<% unless is_customer_logged_in? %>
    some functions
<% end %>
Run Code Online (Sandbox Code Playgroud)

上面的代码是部分布局。

这是我面临的错误信息

undefined method `is_customer_logged_in?' for #<#<Class:0xb51a5300>:0xb5616484>
Run Code Online (Sandbox Code Playgroud)

vee*_*vee 6

您可以将其定义为辅助方法,并且您应该能够在视图中访问该方法。

# app/controllers/application_controller.rb

class ApplicationController < ActionController::Base

  def is_customer_logged_in?
    !!session[:customer_id]
  end

  helper_method :is_customer_logged_in?
end
Run Code Online (Sandbox Code Playgroud)

  • @Setout,是的,要使控制器方法可用于视图,必须将其声明为帮助程序。请看看这个文档:http://www.rubydoc.info/docs/rails/AbstractController/Helpers/ClassMethods:helper_method (3认同)