rails app文件夹目录结构

时间:2012-03-30 15:46:32

标签: ruby-on-rails ruby-on-rails-3 directory-structure

以下是Rails项目的app contorller目录

**app controller directory**

对rails进行自学,但是根据我的理解,如果我在app文件夹中创建一个目录,那么我必须完成路由文件,并匹配以下路由:

match "/editor/usynkdataeditor/saveusynkeditor"

社区的问题是有更好的方法可以为特定工作流定义不同的目录结构,或者可以安全地定义父控制器目录中的所有控制器。

2 个答案:

答案 0 :(得分:8)

如果在controllers目录中创建其他目录,则实际上是命名空间控制器。

所以这个控制器将是:

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

或者,最好只使用宁静的路线而不是像这样的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

您在rails指南中尝试实现的内容有一个非常好的解释http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

最后,回答你的问题:

  1. 更好的方式?嗯,这取决于你的喜好。你觉得你的代码组织得怎么样?您可以使用命名空间但不必使用。然而,
  2. 同样,在父控制器目录中拥有所有控制器没有任何问题。

答案 1 :(得分:1)

这属于Namespacing,它通常被认为是做你想做的事情的最佳方法。看看吧。