【发布时间】:2015-04-21 10:39:54
【问题描述】:
我正在构建一个高级搜索功能,可以很容易地用于各种实体。此功能将应用于所需控制器的 #index 操作,因此我决定关注控制器,将通用部分挂钩到每个控制器的每个 #index include AdvancedSearchFeature。
一切都很顺利,直到我发现翻译是个大问题。每个高级搜索都使用不同的翻译键,应该在某处提供,但是......我不知道在哪里最好这样做。
我想:
- 在关注点上,不是,因为它是通用的;
- 在我包含关注点的控制器中,不是,因为控制器不应该直接处理翻译;
- 在链接到控制器的模型中,不是,因为提供
Model.advanced_search_translation_keys感觉不自然,然后应该将其分配给要在相应视图中使用的变量; - 在与控制器关联的
#index视图中,不是,因为视图不应被翻译散列污染,然后应将其传递给高级搜索功能通用部分。
这就是为什么,我最终将这些翻译放在...助手中。这些助手是从高级搜索功能通用部分调用的,如果存在所需的翻译键,则从那里获取。但是...我真的不喜欢专门创建帮助器来返回翻译的想法。
您对如何做到这一点有更好的想法吗?也许您偶然发现了这个问题并以其他方式解决了它?
【问题讨论】:
-
我不太清楚你在哪里输出翻译。或者问题出现在哪里。难道您不应该只是能够制作一个通用的视图并将翻译添加到通常的 YAML 文件中吗?
-
我想重用翻译,这就是为什么我想将它们的密钥传递给通用部分......但我想我不应该重用它们并将每个都放在 YML 文件中,对吧?
-
如果我没记错的话,你也可以为你的翻译键使用一个通用的命名空间,并在通用模板中使用它。对我来说听起来结构上没有问题,因为您在某种意义上创建了一个模块化搜索插件。
-
我知道,只是陷入了将翻译密钥传递到每个需要的地方的想法。您可以提交答案:)
标签: ruby-on-rails ruby activesupport-concern