Рельсы эшафот не во множественном числе генерируют

Я хотел бы сгенерировать scaffolded-контроллер, view и помощник, названный не единичным, а единичным. Как бы то ни было, я получил несколько именованных файлов, как показано ниже. Я знаю, что они основаны на соглашении о рельсах, но я просто хотел бы создать страницу словаря.

$ rails generate scaffold_controller dictionary
  create  app/controllers/dictionaries_controller.rb
  invoke  erb
  create    app/views/dictionaries
  create    app/views/dictionaries/index.html.erb
  create    app/views/dictionaries/edit.html.erb
  create    app/views/dictionaries/show.html.erb
  create    app/views/dictionaries/new.html.erb
  create    app/views/dictionaries/_form.html.erb
  invoke  helper
  create    app/helpers/dictionaries_helper.rb

Итак, мой вопрос: "Есть ли лучший способ или кратчайший способ генерировать единственные именованные файлы controller/view/helper по команде?"

То, что я хочу, это чуть ниже. Мне интересно, если я должен сделать файлы вручную?

  app/controllers/dictionary_controller.rb
  app/views/dictionary/index.html.erb
  app/helpers/dictionary_helper.rb

2 ответа

Решение

Есть рельсовый путь сделать это, вы можете использовать inflections документировать такие исключения:

конфиг / Инициализаторы /inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "dictionary"
end

Ну, не связываясь ни с чем в рельсах, вы можете настроить маршруты, используя resource вместо resources подробнее об этом здесь

Вы по-прежнему будете использовать имя контроллера множественного числа (если вам нужно обработать), но URL будет единичным, и у вас не будет всех действий, подобных множественному числу resources (подробнее об этом в ссылке), если вы просто хотите одну страницу, ограничьте с помощью only: :show

resource :dictionary, only: :show

Тогда вам даже не нужен контроллер, просто создайте файл dictionaries/show.html.haml (или эрб) и это будет работать

http://example.com/dictionary
Другие вопросы по тегам