【问题标题】:undefined method `t' for Admin::FaqsController:ClassAdmin::FaqsController:Class 的未定义方法“t”
【发布时间】:2014-03-19 16:14:15
【问题描述】:

在我的项目中,我在命名空间 admin 中有控制器,并且我正在使用 breadcrumbs_on_rails 来构建面包屑。我的控制器看起来像: 模块管理

class FaqsController < Admin::ApplicationController
    include FaqsHelper
    load_and_authorize_resource

   add_breadcrumb t('faqs.faqs_list') , :faqs_path #this line makes the problem
    def index
      @faqs = @faqs
      add_breadcrumb t('faqs.faqs_list')

    end

    def new
      add_breadcrumb t('faqs.new')
    end

 #other code ommitted
  end
end

我可以在新建、编辑和其他控制器动作中使用 t 方法,但是当这个 't' 不在控制器动作中时,我会遇到以下错误:

undefined method `t' for Admin::FaqsController:Class

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-i18n


    【解决方案1】:

    感谢Skydan,但extend 仅适用于模块。我通过将include ActionView::Helpers::TranslationHelper 添加到我的控制器使其工作。

    【讨论】:

      【解决方案2】:

      我可以建议扩展您的课程 extend ActionView::Helpers::TranslationHelper 它将允许您使用 #t#l 助手。

      【讨论】:

        【解决方案3】:

        使用I18n.t 而不仅仅是t

        【讨论】:

        • 我在自定义库文件中使用时遇到了同样的错误。这解决了问题。谢谢!
        • 如果你觉得每次都打电话给I18n.t很冗长,你可以把这行加到你的ApplicationController:delegate :t, to: I18n
        • 嘿,但是I18n.tdelegate :t, to: I18n 你不能使用lazy_lookout 你必须命名整个事情。 t('.home.index.logged_in') 而不是 t(.logged_in)
        猜你喜欢
        • 2019-06-24
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-24
        相关资源
        最近更新 更多