如何使Activestorage在我的语言环境中工作 scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
resources :posts
root to: 'pages#index'
get '/*locale/*path', to: redirect("/#{I18n.default_locale}/%{path}")
get '/*path', to: redirect("/#{I18n.default_locale}/%{path}"), constraints: lambda { |req| I18n.available_locales.none? { |locale| req.path.starts_with? locale.to_s } }
?
我已经启动并运行了主动存储。图像已保存并在视图中可见。
然后,我使用以下代码将语言环境添加到我的路线中:
application_controller.rb
我的before_action :set_locale
def set_locale
I18n.locale = params[:locale] if params[:locale].present?
end
def self.default_url_options(options = {})
{ locale: I18n.locale }
end
中也有一个前置动作
SELECT convert(datetime, CONVERT(nvarchar(10), GETDATE(), 120))
如果我删除了上面的代码,则会显示图像。如何使image_tags与我的国际化一起使用?
答案 0 :(得分:0)
我不得不改变路线。我添加了一个LocaleConstraint。 以下是适用于ActiveStorage的路由:
class LocaleConstraint
def self.matches?(request)
(I18n.available_locales.none? { |locale| request.path.starts_with? locale.to_s }) && (!request.path.include? 'rails/active_storage/blobs')
end
end
Rails.application.routes.draw do
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
devise_for :users, controllers: { registrations: 'registrations' }
resources :posts
get '/*locale/*path', to: redirect("/#{I18n.default_locale}/%{path}")
get '/*path', to: redirect("/#{I18n.default_locale}/%{path}"), constraints: LocaleConstraint
end
end