我正在使用带有 Ransack 0.7 的 Rails 3.2 来搜索我的数据库,但在我的模型属性的显示名称方面遇到了问题。我在视图中的属性字段在标准条件字段中调用:
<%= f.attribute_fields do |a| %>
<%= a.attribute_select( {}, { :class =>"formee-small" } ) %>
<% end %>
在模型中,我的属性字段由以下定义:
UNRANSACKABLE_ATTRIBUTES = ["id"]
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
end
现在假设我有一个名为“用户名”的属性,在我看来它将显示为“用户名”。现在,如果我想翻译它,我需要将翻译放在我的标准语言环境文件中,对于我的网站的英语版本和 de.yml 将是 en.yml 和德文版本。
现在问题来了:
只要我知道我的模型及其属性,此解决方案就可以正常工作。但是我有一个非常复杂的应用程序,它允许用户创建自己的 MVC(模型、视图和控制器)并使用他自己的翻译。在每种情况下,这都可以正常工作,除了在 Ransack 搜索表单中为用户创建的 MVC 显示的名称。
因此,可能的解决方案是:
1) 每次用户创建新的 MVC 以及每次更改属性的翻译之一时,我都会找到一种方法来更新我的语言环境文件。
2) 我绕过语言环境文件并直接告诉 Ransack 或 Rails 我的属性的正确名称。
无论哪种方式,我都没有找到任何方法来做到这一点,所以如果有人有解决方案,我将不胜感激。也欢迎其他解决方案。
感谢问候!