Asked May 2nd, 2018 2:34 AM 179 0 1
  • 179 0 1
0

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

Share
  • 179 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 ANSWERS


Answered May 2nd, 2018 2:45 AM
Accepted
+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"

Share
Quách Huy Tùng @quachhuytung
May 2nd, 2018 8:57 AM

Dạ em cám ơn ạ

0
| Reply
Share