我想在铁路上创建一个像应用程序一样的商店。 这些产品有多种语言的描述。
我不确定实现它的“最佳”方式是什么。
我应该创建2个型号(产品和产品描述) 或者把它们放在一个模型中?
有人体验到这可能是一个好的和干净的方式吗?
更新:
我不知道这是否是一个好的解决方案,但它确实有用。
产品型号中的:
def self.set_language(language)
@@language = language
end
def title
read_attribute("title_#{@@language}")
end
<_>在application_controller 中
before_filter :set_language
private
def set_language
Product.set_language('en')
end
答案 0 :(得分:2)
第一个选择,您可以使用I18n,但是当内容不变时更适用,例如网页上的标题和标签。
或者,您可以在products表中包含description_en,description_fr,description_jp等多个列,并在每个请求中附加params [:locale]。
例如,如果params [:locale] =='jp',您只需获取description_jp的内容,因此在您的控制器中,您可以这样写:
def show
@product = Product.find(params[:id])
@locale = params[:locale]
end
并在您看来:
<p>
<%= @product.send("description_#{@locale}") %>
</p>
以及如何设置区域设置参数?我建议你阅读这一节。 http://edgeguides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params
希望它可以帮到你!
答案 1 :(得分:0)
你需要研究i18n(国际化)
查看相关指南here。