虽然这可能是一个愚蠢的问题。但是对于我作为初学者来说,这是非常需要的。
我已经使用脚手架创建了一些控制器,这是命名嵌套资源的正确方法
rails g scaffold schedule/event
输出:
或rails d scaffold schedules/event
谢谢,如果您能给我一些参考,以及为什么选择这两个答案,那将是非常有益的:)
答案 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使用变形器生成复数形式,如果您跳过此过程,某些操作可能无法按预期工作。
一般情况下,脚手架时始终使用单数。