我有一个带有索引,显示页面和表单的常规Rails应用。
我希望允许站点管理员自定义整个站点的默认文本,而无需更改代码。
例如,管理员应该能够将页面的H1标签从“用户索引”更改为“客户索引”,或将表单标签从“用户名”更改为“客户名”。
我当时正在考虑创建一个名为 ui_texts 的模型,该模型具有两个字段:
然后,我将用以下查询替换当前的硬编码文本:
Ui_text.where(machine_name:"user_name").value
管理员可以使用一个简单的CRUD从管理员界面编辑ui_texts。
这种方法的问题在于,复杂的表单将生成数十个甚至数百个数据库查询,以填充所有UI文本。
即使我按 machine_name 进行索引,额外的查询也会增加页面加载的时间。
我想知道实现这种功能的最佳方法是什么?
答案 0 :(得分:1)
您可以使用i18n本地化应用程序并将其设置为使用数据库后端。预计这会花费您几个小时的时间,这很麻烦。
https://guides.rubyonrails.org/i18n.html
https://guides.rubyonrails.org/i18n.html#using-different-backends
设置完成后,在应用程序中创建CRUD部分将变得很简单,用户可以在其中编辑所需的任何消息。