首页 > 解决方案 > 单例资源:如何在路由中隐藏 ID?

问题描述

尽管我已经使用 Rails 10 年了,但路由约定和机制仍然是我没有真正看透的东西。

所以我创建了一个单例资源AppConfig,管理员可以在其中维护我的应用程序的一些全局设置:

管理区截图

每个AppConfig设置都有一个数据库字段,所以它看起来像这样:

数据库工具截图

由于应用程序只需要一个AppConfig记录,我已经实现了一些机制来检索它AppConfig.instance(或者在没有可用记录时创建这样的记录),灵感来自于 See How to implementation a singleton model

def self.instance
  first_or_create! app_abbreviation: 'A4AA 2.0',
                   app_name: 'Access for All Audit 2.0',
                   app_slogan_de: 'Accessibility Audit Tool der nächsten Generation',
                   app_slogan_en: 'Next generation accessibility audit tool',
                   organisation_name_de: '«Zugang für alle»',
                   organisation_name_en: '«Access for all»',
                   organisation_abbreviation_de: 'ZFA',
                   organisation_abbreviation_en: 'A4A',
                   organisation_url: 'http://www.access-for-all.ch/'
end

def self.find(*args)
  instance
end

我添加了这样的路线:

resources :app_configs, only: [:show, :edit, :update]

一切都很好,但我被 URL 中的 ID 所困扰:

浏览器网址截图

有没有办法隐藏它,只需要/en/app_configs(指向#show)和/en/app_configs/edit?我摆弄resource(而不是resources),但我似乎很难让它工作。

标签: ruby-on-railsroutessingleton

解决方案


推荐阅读