【问题标题】:Rails controller concern with custom translation keysRails 控制器关注自定义翻译键
【发布时间】:2015-04-21 10:39:54
【问题描述】:

我正在构建一个高级搜索功能,可以很容易地用于各种实体。此功能将应用于所需控制器的 #index 操作,因此我决定关注控制器,将通用部分挂钩到每个控制器的每个 #index include AdvancedSearchFeature

一切都很顺利,直到我发现翻译是个大问题。每个高级搜索都使用不同的翻译键,应该在某处提供,但是......我不知道在哪里最好这样做。

我想:

  • 在关注点上,不是,因为它是通用的;
  • 在我包含关注点的控制器中,不是,因为控制器不应该直接处理翻译;
  • 在链接到控制器的模型中,不是,因为提供Model.advanced_search_translation_keys 感觉不自然,然后应该将其分配给要在相应视图中使用的变量;
  • 在与控制器关联的 #index 视图中,不是,因为视图不应被翻译散列污染,然后应将其传递给高级搜索功能通用部分。

这就是为什么,我最终将这些翻译放在...助手中。这些助手是从高级搜索功能通用部分调用的,如果存在所需的翻译键,则从那里获取。但是...我真的不喜欢专门创建帮助器来返回翻译的想法。

您对如何做到这一点有更好的想法吗?也许您偶然发现了这个问题并以其他方式解决了它?

【问题讨论】:

  • 我不太清楚你在哪里输出翻译。或者问题出现在哪里。难道您不应该只是能够制作一个通用的视图并将翻译添加到通常的 YAML 文件中吗?
  • 我想重用翻译,这就是为什么我想将它们的密钥传递给通用部分......但我想我不应该重用它们并将每个都放在 YML 文件中,对吧?
  • 如果我没记错的话,你也可以为你的翻译键使用一个通用的命名空间,并在通用模板中使用它。对我来说听起来结构上没有问题,因为您在某种意义上创建了一个模块化搜索插件。
  • 我知道,只是陷入了将翻译密钥传递到每个需要的地方的想法。您可以提交答案:)

标签: ruby-on-rails ruby activesupport-concern


【解决方案1】:

最好将您的翻译键嵌套在引用您的模块的命名空间下,并在通用视图中使用这些键。不需要任何传递,您的观点将更明确地说明预期翻译的来源。

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多