我试图在控制器、视图和模型中共享一个会话变量。
使用以下代码,它在控制器和视图中工作:
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :best_language_id
# Returns the ID of the language to use to display the description.
def best_language_id
@best_language_id ||= session[:best_language_id]
@best_language_id ||= current_project.default_language.id
return @best_language_id
end
end
但我不能从模型中调用它。
我希望能够在控制器、视图和一个模型中调用 best_language_id,以在未找到翻译时获得 best_language_id 的后备。
我的模型中的示例(不工作):
class Point < ActiveRecord::Base
# Retuns the attached word in the given language if exists.
# Otherwise, falls back on another translation
def word(preffered_language_id)
word = Word.find(:translation_id => self.translation_id, :language_id => preffered_language_id)
if word.blank?
word = translations.where(:translation_id => self.translation_id, :language_id => best_language_id)
end
return word
end
end
我知道模型不应该包括 applicationcontroller 方法调用,但是如何在控制器和模型之间共享我的 best_language_id 呢?
编辑:使用 i18n 不是这里的问题。翻译不是固定的字符串,而是数据库中的变量。
感谢您的帮助!