2

我正在使用带有 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 我的属性的正确名称。

无论哪种方式,我都没有找到任何方法来做到这一点,所以如果有人有解决方案,我将不胜感激。也欢迎其他解决方案。

感谢问候!

4

1 回答 1

0

如果有人想知道,我将 translate.rb 文件从 ransack 更改为

lib/ransack/translate.rb 

并更换了正常的

t("translation key")

I18n.t("translation key")

现在我可以从我的数据库中读取属性,如果它们具有以下键:

ransack.attributes.NAME_OF_THE_ATTRIBUTE

也许不是最好的方法,但它对我来说很好!

于 2013-05-13T09:58:46.043 回答