代码之家  ›  专栏  ›  技术社区  ›  Muhammad Rahmatullah

ruby on rails:命名嵌套控制器和视图的正确方法是什么

  •  0
  • Muhammad Rahmatullah  · 技术社区  · 7 年前

    不过,你可能会觉得这是个愚蠢的问题。但作为一个初学者,这是非常需要的。

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

    • 型号/明细表.rb
    • 模型/时间表/事件.rb
    • 控制器/日程表/事件控制器.rb
    • 视图/计划/事件/

    rails d scaffold schedules/event

    • 型号/附表.rb
    • 型号/时间表/事件.rb
    • 控制器/日程表/事件控制器.rb
    • 视图/计划/事件/

    谢谢,如果你能给我一些推荐信,以及为什么你要在这两者之间选择一个答案,这将是有益的:)

    2 回复  |  直到 7 年前
        1
  •  1
  •   Alex.U    7 年前

    模型名称必须始终是单数,控制器必须是复数。否则,路由时可能会遇到问题。另外,在您的问题中,输出 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

        2
  •  1
  •   user2490003    7 年前

    据我所知,多个名称空间并不重要,所以从技术上来说,这两个名称空间都是正确的。

    schedules/event 读起来更像传统的rails路径,所以我个人推荐。但我不认为它会影响应用程序的任何功能方面。