Yêu cầu thg 5 2, 2018 2:34 SA 253 0 1
  • 253 0 1
0

Sử dụng i18n trong application controller như thế nào

Chia sẻ
  • 253 0 1

Chào các anh chị, em cũng mới học RoR, mong mọi người giúp đỡ Chẳng là em dùng flash trong application_controller, kiểu như

class ApplicationController < ActionController::Base
...
private
def abc
  ...
  flash[:danger] = t ".def"
end
end

trong 1 controller khác được kế thừa ApplicationController em muốn xử lý như sau:

class CategoryController < ApplicationController
before_action :abc,  only: :show
def show; end
end

trong file en.yml:

en:
  controllers:
    application:
      abc:
        def: xyz

em thử thì thấy khi gọi đến action show của Category, thì đều bị lỗi template missing, mặc dù trên tầng application controller em đã khai báo. Em nghĩ do mình đã cho Category controller kế thừa application controller, khi đó mình gọi hàm abc là gọi hàm này của Category controller. Em chưa xử lý được, mong mn giúp đỡ!

1 CÂU TRẢ LỜI


Đã trả lời thg 5 2, 2018 2:45 SA
Đã được chấp nhận
+3

Trong controller muốn sử dụng I18n thì bạn phải viết chính xác (không sử dụng cơ chế lazy lookup giống trong view được) như sau:

I18n.t "controllers.application.abc.def"

Chia sẻ
Avatar Quách Huy Tùng @quachhuytung
thg 5 2, 2018 8:57 SA

Dạ em cám ơn ạ

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí