Ruby On Rails:命名嵌套控制器和视图的正确方法是什么

时间:2018-07-04 02:37:37

标签: ruby-on-rails

虽然这可能是一个愚蠢的问题。但是对于我作为初学者来说,这是非常需要的。

我已经使用脚手架创建了一些控制器,这是命名嵌套资源的正确方法 rails g scaffold schedule/event 输出:

  • models / schedule.rb
  • models / schedule / event.rb
  • controllers / schedule / events_controllers.rb
  • 观看次数/时间表/事件/

rails d scaffold schedules/event

  • models / schedules.rb
  • models / schedules / event.rb
  • controllers / schedules / events_controllers.rb
  • 观看次数/时间表/事件/

谢谢,如果您能给我一些参考,以及为什么选择这两个答案,那将是非常有益的:)

2 个答案:

答案 0 :(得分:1)

据我所知,多个名称空间无关紧要,因此从技术上来讲,两者都是正确的。

schedules/event读起来更像传统的Rails路线,所以我个人建议这么做。但我认为这不会影响该应用程序的任何功能方面。

答案 1 :(得分:1)

模型名称必须始终为单数,控制器为复数。否则,路由时可能会遇到问题。另外,在您的问题中,rails g scaffold schedule/event的输出应类似于:

❯ rails g scaffold schedule/event
Running via Spring preloader in process 1938
      invoke  active_record
      create    db/migrate/20180704090256_create_schedule_events.rb
      create    app/models/schedule/event.rb
      create    app/models/schedule.rb
      invoke    test_unit
      create      test/models/schedule/event_test.rb
      create      test/fixtures/schedule/events.yml
      invoke  resource_route
       route    namespace :schedule do
    resources :events
  end
      invoke  scaffold_controller
      create    app/controllers/schedule/events_controller.rb
      invoke    erb
      create      app/views/schedule/events
      create      app/views/schedule/events/index.html.erb
      create      app/views/schedule/events/edit.html.erb
      create      app/views/schedule/events/show.html.erb
      create      app/views/schedule/events/new.html.erb
      create      app/views/schedule/events/_form.html.erb
      invoke    test_unit
      create      test/controllers/schedule/events_controller_test.rb
      invoke    helper
      create      app/helpers/schedule/events_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/schedule/events/index.json.jbuilder
      create      app/views/schedule/events/show.json.jbuilder
      create      app/views/schedule/events/_schedule_event.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/schedule/events.coffee
      invoke    scss
      create      app/assets/stylesheets/schedule/events.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss

注意app/controllers/schedule/events_controller.rb,以及仅实体名称是复数形式。

Rails使用变形器生成复数形式,如果您跳过此过程,某些操作可能无法按预期工作。

一般情况下,脚手架时始终使用单数。

This might give you some insights as well