структура каталогов папок приложения rails - PullRequest
3 голосов
/ 30 марта 2012

Вот каталог приложения-контроллера из проекта Rails

**app controller directory**

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

match "/editor/usynkdataeditor/saveusynkeditor",

Вопрос для сообщества: есть ли лучший способ, с помощью которого я могу определить другую структуру каталогов для конкретного рабочего процесса или безопасно определить все контроллеры в каталоге родительских контроллеров.

Ответы [ 2 ]

8 голосов
/ 30 марта 2012

Если вы создаете дополнительный каталог в каталоге контроллеров, вы фактически используете пространства имен для ваших контроллеров.

Таким образом, этот контроллер будет:

class Editor::UsynkdataeditorController < ApplicationController
  def saveusynkeditor
  end
end

Насколько определены маршруты, вы можете сделать что-то вроде:

MyApplication::Application.routes.draw do

  namespace :editor do
    get "usynkdataeditor/saveusynkeditor"
  end

end

Whish даст вам маршрут:

$ rake routes
editor_usynkdataeditor_saveusynkeditor GET /editor/usynkdataeditor/saveusynkeditor(.:format) editor/usynkdataeditor#saveusynkeditor

Или, лучше просто использовать restful-маршруты вместо saveusynkeditor, например:

MyApplication::Application.routes.draw do

  namespace :editor do
    resources :usynkdataeditor do
      collection do
        get :saveusynkeditor
      end
    end
  end

end

когда вы получите:

$ rake routes
saveusynkeditor_editor_usynkdataeditor_index GET    /editor/usynkdataeditor/saveusynkeditor(.:format) editor/usynkdataeditor#saveusynkeditor
                editor_usynkdataeditor_index GET    /editor/usynkdataeditor(.:format)                 editor/usynkdataeditor#index
                                             POST   /editor/usynkdataeditor(.:format)                 editor/usynkdataeditor#create
                  new_editor_usynkdataeditor GET    /editor/usynkdataeditor/new(.:format)             editor/usynkdataeditor#new
                 edit_editor_usynkdataeditor GET    /editor/usynkdataeditor/:id/edit(.:format)        editor/usynkdataeditor#edit
                      editor_usynkdataeditor GET    /editor/usynkdataeditor/:id(.:format)             editor/usynkdataeditor#show
                                             PUT    /editor/usynkdataeditor/:id(.:format)             editor/usynkdataeditor#update
                                             DELETE /editor/usynkdataeditor/:id(.:format)             editor/usynkdataeditor#destroy

Есть действительно хорошее объяснение http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing того, чего вы пытаетесь достичь в направляющих рельсов.

Наконец, ответим на ваш вопрос:

  1. лучше? Ну, это зависит от ваших предпочтений. Как вам нравится ваш код организован? Вы можете использовать пространство имен, но вам не нужно. Тем не менее,
  2. в то же время нет ничего плохого в том, что все контроллеры находятся в родительском каталоге контроллеров.
1 голос
/ 30 марта 2012

Это подпадает под Пространство имен и обычно считается лучшим подходом к тому, что вы пытаетесь сделать. Проверьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...