Rails에서 Generate하면 ​​ArgumentError로 화난 이야기

루오시바같다

Rails 튜토리얼도 완주했고, 오리지널 Web 앱 만들겠다고 자세하고 Generate 해 보았더니,
ArgumentError와 화가 나서 비망록입니다.
$ rails generate controller Companys show
Traceback (most recent call last):
        58: from bin/rails:4:in `<main>'
        〜〜省略〜〜
         1: from /Library/Ruby/Gems/2.6.0/gems/actionpack-5.1.6/lib/action_dispatch/routing/mapper.rb
            :307: in `check_controller_and_action'
/Library/Ruby/Gems/2.6.0/gems/actionpack-5.1.6/lib/action_dispatch/routing/mapper.rb
:327:in `check_part': Missing :controller key on routes definition, please check your routes. 
(ArgumentError)

ArgumentError란?





메소드의 인수가 올바르지 않거나 부족할 때 발생하는 에러입니다.

wrong number of arguments (given 0, expected 1+)라는 오류 메시지가 표시됩니다.
이것은 인수의 수가 잘못되어 있습니다(현재 0개입니다, 정상적인 인수의 수는 1개 이상입니다) 라는 의미입니다.
즉 form_for 의 메소드의 인수가 부족하기 때문에 일어나고 있는 에러인 것을 알 수 있습니다.

메소드 참조 (http://railsdoc.com/)을 보면서 올바른 인수가 설정되었는지 확인하고 수정하면 해결할 수있는 경우가 많습니다.

참고 기사 「오류 메시지로부터 배운다」

과연 ArgumentError는 인수의 오류입니다.
그리고 오류 문장을 읽는 것이 중요합니다.

오류 메시지로 돌아가기


Missing :controller key on routes definition, please check your routes. (ArgumentError)"routes 상에 있는 컨트롤러의 키가 미정도리이므로, routes를 확인해 주세요."

뭔가 잘 모르겠지만, please check your routes.
routes.rb
Rails.application.routes.draw do
  root 'static_pages#home'
  get ''  # <= 何これ?
end

우선 삭제해 보고, 다시 한번 generate 해 본다
$ rails generate controller Companys show
      create  app/controllers/companys_controller.rb
       route  get 'companys/show'
      invoke  erb
      create    app/views/companys
      create    app/views/companys/show.html.erb
      invoke  test_unit
      create    test/controllers/companys_controller_test.rb
      invoke  helper
      create    app/helpers/companys_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/companys.coffee
      invoke    scss
      create      app/assets/stylesheets/companys.scss

잘 갔다! ! !

결론 : 작업 도중 코드를 방치하지 마라.



그렇게 마음에 맹세했습니다.

좋은 웹페이지 즐겨찾기