Я использую globalize gem для перевода контента в мое приложение Rails. Все отлично работает, когда я меняю язык на языке по умолчанию: en to: de, но когда я хочу изменить язык: de: en я получаю NoMethodError (undefined method 'color' for nil:NilClass)
nil класс при изменении языка от: de до: en, но не наоборот
Я провел некоторое исследование и попробовал несколько советов, но имею признать, что я не совсем понимаю этот бит, который, вероятно, является причиной ошибки:
application_controller.rb
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
request.subdomain
request.env["HTTP_ACCEPT_LANGUAGE"]
request.remote_ip
end
def default_url_options(options = {})
(I18n.locale.to_sym.eql?(I18n.default_locale.to_sym) ? {} : {locale: I18n.locale})
end
Я высоко ценю подсказку, как решить эту проблему или какое-то объяснение, как этот код работает бы весьма желательны.
Вот модель:
page.rb
class Page < ActiveRecord::Base
translates :name, :permalink
validates_uniqueness_of :permalink, :message => "This url is already taken"
validates_presence_of :permalink
validates_presence_of :name
validates_format_of :permalink, :with => /\A[a-zA-Z0-9-_]*\z/i, :message => 'Url can only contain downcase letters from a-z and numbers from 0-9 and a dash and underscore'
before_save :only_allow_one_home_page
belongs_to :label
has_many :chapters
accepts_nested_attributes_for :chapters, :allow_destroy => true
mount_uploader :backgroundimage, BackgroundimageUploader
def chapters_for_form
collection = chapters.where(page_id: id)
collection.any? ? collection : chapters.build
end
def to_param
permalink
end
end
И контроллер: pages_controller.rb
def set_page
@page = Page.find_by_permalink(params[:id])
end
И маршруты:
resources :labels, do
resources :pages
end
Когда вы получаете «NoMethodError»? После некоторого запроса (какой)? Когда вы что-то делаете в консоли (что именно)? – EugZol
Я получаю сообщение об ошибке при смене языка с: de до: en, нажав на ссылку: '<% = link_to" E ", locale:" en "%>' –