컨트롤러와 도우미에 단수 이름을 사용하는 데 단점이 있습니까? 이것에 의존하는 것은 아무것도 없습니다. 적어도 내 제한된 실험에 따르면 도우미는 해당 컨트롤러와 단수 대 복수에 대해 동일한 선택을 할 필요가없는 것 같습니다. 사실인가요?
컨트롤러와 도우미에 단수 이름을 사용하는 데 단점이 있습니까? 이것에 의존하는 것은 아무것도 없습니다. 적어도 내 제한된 실험에 따르면 도우미는 해당 컨트롤러와 단수 대 복수에 대해 동일한 선택을 할 필요가없는 것 같습니다. 사실인가요?
답변:
확실히 복수형 .
제어 장치:
dog_controller.rb
노선 :
map.resources :dogs # => blows up
map.resources :dog # is ok, but...
dogs_path # => blows up
dog_path # => ok
제어 장치:
dogs_controller.rb
노선 :
map.resources :dogs
dogs_path # => ok
dog_path # => ok
rails generate controller --help
복수의 예가 있습니다.
Example:
`rails generate controller CreditCards open debit credit close`
CreditCards controller with URLs like /credit_cards/debit.
Controller: app/controllers/credit_cards_controller.rb
Test: test/controllers/credit_cards_controller_test.rb
Views: app/views/credit_cards/debit.html.erb [...]
Helper: app/helpers/credit_cards_helper.rb
컨트롤러에 복수 이름을 사용하는 것은 관례 일뿐입니다.
일반적으로 복수 이름은 더 자연스럽게 들리지만 (특히 특정 모델에 직접 연결된 컨트롤러의 경우 : 사용자-> 사용자 등) 원하는대로 사용할 수 있습니다.
도우미의 경우 기본적으로 모든 컨트롤러에 대해 모든 도우미를 사용할 수 있으므로 기술적으로 도우미 이름을 지정하는 방법은 전혀 중요하지 않습니다. 컨트롤러와 이름이 같은 도우미에 컨트롤러의 도우미 기능을 유지하는 것은 또 다른 규칙입니다.
Rails 가이드에 아주 완전한 설명이 있습니다 : http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default
런타임 중에 해당 모델의 인스턴스가 하나 이상 존재할 수 있는지 여부에 관계없이 하나의 컨트롤러가 하나의 모델을 처리하는 것은 Rails 규칙입니다. 그러나 컨트롤러 (및 관련 뷰) 중 일부가 특정 모델과 연결되지 않고 더 복잡한 기능 집합을 처리하는 Rails 애플리케이션을 사용할 수 있습니다. 이 경우 자동 복수화는 의미가 없습니다.
내가 현재 작업중인 Rails 애플리케이션은이 카테고리에 적합하며, Rails가 내가 한 곳에서 단수로 정의한 식별자가 다른 곳에서는 복수 형태로 사용되기를 기대한다는 사실은 제게 짜증이납니다. 예를 들어 다음과 같이 정의하고 싶을 수 있습니다 config/routes.rb
.
resource :dashboard, :only => [:show]
그런 다음 컨트롤러 DashboardController
가 응용 프로그램의 특정 측면에 대한 요약 정보를 표시하여 둘 이상의 데이터베이스 테이블에서 정보를 수집하기를 원합니다 . 따라서 여기서는 Dashboard
응용 프로그램의 어떤 모델도 언급하지 않으며 컨트롤러의 이름이 DashboardsController
.
나는 이 답변 에서 자동 복수화의 자극에 대한 좋은 해결책을 찾았습니다 . 간단히 말해서 파일을 편집 config/initializers/inflections.rb
하고 자동으로 복수화되지 않을 단어를이 정의에 추가합니다.
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end
Rails 에서 컨트롤러의 명명 규칙은 컨트롤러 이름 의 마지막 단어를 복수화 하는 것을 선호 하지만, 엄격하게 요구되는 것은 아닙니다 (예 :)ApplicationController
.
예를 들어, ClientsController
가보다 바람직하고 ClientController
, r 또는 SiteAdminsController
보다 바람직하다 .SiteAdminControlle
SitesAdminsController
이 규칙을 따르면 각 :path
또는 을 한정 할 필요없이 기본 경로 생성기 (예 : 리소스 등)를 사용할 수 있으며 :controller
애플리케이션 전체에서 URL 및 경로 도우미의 사용을 일관되게 유지할 수 있습니다.
참조 : 컨트롤러 명명 규칙-레일 문서
컨트롤러 이름에 단수를 사용하면 기분이 좋아집니다.
컨트롤러가 리소스이면 복수형이어야합니다.
예를 들면
제어 장치
articles_controller.rb
모델
article.rb
그러나 다음과 같은 해당 모델이 없을 때 단일 컨트롤러 이름을 사용할 수 있습니다.
welcome_controller.rb
복수형을 사용하는 것이 더 좋게 들립니다. 단수 리소스를 처리하는 컨트롤러 (예 : 사용자)가있는 경우 여전히 url / user의 이름을 지정할 수 있습니다.
도우미를 사용하면 모든 컨트롤러에 대한 도우미가 필요하지 않은 경우가 많으며 ascorss 여러 컨트롤러를 사용할 수 있고 응용 프로그램 도우미를 통해 모든 컨트롤러를 처리 할 수있는 도우미 메서드가있을 것입니다. 대신 layout_helper 또는 any 다른 잘 이름이 지정된 파일.