모든 RESTful 기능으로 컨트롤러 생성


86

모든 RESTful 작업이 스텁 처리 된 컨트롤러를 생성하려고합니다. Wikibooks-Ruby on Rails 에서 컨트롤러 이름으로 생성기를 호출하기 만하면된다는 내용을 읽었습니다 . 그래서 실행 script/generate rspec_controller Properties했지만 빈 컨트롤러가 있습니다.

다른 제안은 대단히 감사하겠습니다.


1
thenduks, 내가 당신만큼 경험이 있다면 그것은 사실 일 것입니다. 그러나 나는 내 머릿속에서 7 개의 편안한 행동조차 모르기 때문에 항목을 구글링하고 페이지와 내 앱은 각각 입력합니다. 내가 그들을 알게되면, 당신의 해결책이 더 쉽다는 것에 동의합니다
Barb

답변:


143

자동화 된 방법은 모르겠지만 다음과 같은 경우 :

script/generate controller your_model_name_in_plural new create update edit destroy index show

모두 당신을 위해 만들어 질 것입니다

Rails 4 업데이트

rails g scaffold_controller Property

7
훌륭한 답변입니다. 전문가는 나머지를 무시할 수 있습니다. 멍청이에 대한 참고 사항-내가 잘못 이해 한대로 컨트롤러 PropertyController의 이름을 지정하면 PropertyController 컨트롤러를 얻을 수 있습니다. :)
Barb

2
내 대답은 똑같은 일을합니다-기본 7 작업을 모두 지정할 필요는 없습니다.
konung 2010 년

4
참고로 ... 기본 CRUD 작업에 대해 명명 된 메서드가있는 컨트롤러 만 생성됩니다. 경로는 RESTful과는 거리가 멀다 ... 예 route get "mycontroller/create"(작성은 게시물이어야 함)
rthbound

이 답변이 일반적인 사용자 지정 작업에 더 적합하다는 데 동의하며 실제로 원하는 RESTful 규칙을 존중하지 않습니다.
prusswan 2013

이 답변 레일 (4)에 대한 레일 4. 참조 konung의 답변을 오래된입니다
toobulkeh

97

Rails 3에는 rails generate scaffold_controller .... 여기에 더 많은 정보가 있습니다 .


1
RESTful 경로를 생성하므로이 방법을 선호합니다. 를 사용하면 RESTful이 아닌 rails g controller Foos create경로가 생성 get '/create'됩니다.
rthbound 16시

37

편집 (일부 의견으로 인해) : 원래 질문은 2010 년에 있었으므로 대답은 RAILS 4가 아니라 레일 2입니다!

비계를 사용해보십시오.

script/generate scaffold controller Properties

Ruby On Rails의 공식 문서 섹션

rails scaffolding에서 Google 검색을하면 더 많은 정보를 찾을 수있을 것입니다. 도움이되기를 바랍니다.

편집 : 레일 4 용

rails g scaffold_controller Property


rspec_scaffold 컨트롤러 속성을 스크립팅 / 생성 할 수 있습니까?
Barb

네 할 수 있습니다. 자세한 정보 / 튜토리얼 : blog.davidchelimsky.net/2007/05/14/…
konung

이 답변은 최신 버전의 Rails에서 구식이라고 생각합니다. 그것은 단순히 "컨트롤러"라는 개체 / 모델 전체 발판을 만듭니다
prusswan

4
예, 2010 년에 버전 2로 작성되었습니다. 질문에서 다음과 같습니다. 이제 (Rails 4) 다음과 같이 보일 것입니다. rails g scaffold_controller 속성 (scaffold_controller는 scaffolding을 호출하고 모델 이름 (단수)을 제공해야하지만 그럴 필요는 없습니다)
konung

2
rails g scaffold_controller Property레일 3.2에서도 작동 하는지 확인할 수 있습니다. 그러면 모델없이 모든 7 개의 기본 RESTful 작업과 해당 뷰가있는 PropertiesController가 생성됩니다.
mkralla11 2013-08-29

15

Rails 4/5에서는 다음 명령이 나를 위해 트릭을 수행합니다.

rails g scaffold_controller Property --skip-template-engine

컨트롤러 작업을 생성했지만보기는 생성하지 않았습니다.


9

레일스 5.1

출발점:

당신은 (예를 통해하십시오 컨트롤러가없는 모델도 뷰를 만들었습니다 rails generate model category)

객관적인:

전체 RESTful 리소스로 업그레이드

명령:

rails generate scaffold_controller category

스캐 폴드 컨트롤러, 7 개의 RESTful 작업 및 관련 뷰를 스텁 아웃합니다. (참고 : 모델 이름 CamelCased 또는 under_scored를 전달할 수 있습니다.)

산출:

varus@septimusSrv16DEV4:~/railsapps/dblirish$ rails generate scaffold_controller category
Running via Spring preloader in process 45681
      create  app/controllers/categories_controller.rb
      invoke  erb
      create    app/views/categories
      create    app/views/categories/index.html.erb
      create    app/views/categories/edit.html.erb
      create    app/views/categories/show.html.erb
      create    app/views/categories/new.html.erb
      create    app/views/categories/_form.html.erb
      invoke  test_unit
      create    test/controllers/categories_controller_test.rb
      invoke  helper
      create    app/helpers/categories_helper.rb
      invoke    test_unit
      invoke  jbuilder
      create    app/views/categories/index.json.jbuilder
      create    app/views/categories/show.json.jbuilder
      create    app/views/categories/_category.json.jbuilder

7

당신은 비계를 찾고 있습니다.

시험:

script/generate scaffold Property

그러면 컨트롤러, 모델, 마이그레이션 및 관련 테스트가 제공됩니다. 옵션을 사용하여 마이그레이션을 건너 뛸 수 있습니다 --skip-migration. 다른 사람을 원하지 않으면 직접 삭제해야합니다. 을 사용하지 않으면 발생하지 않는 기존 파일 덮어 쓰기에 대해 걱정하지 마십시오 --force.

klew가 주석에서 지적했듯이 이것은 이름뿐만 아니라 메서드 본문 도 정의합니다 . REST 컨트롤러의 시작점으로 사용하는 것이 매우 유용합니다.


@Barb, 나는 Scaffolding이 모든 기능을 선언 할뿐만 아니라 정의하기 때문에 당신에게 더 좋을 것이라고 생각합니다. 한 번 이상 만들어서 예시로 사용하는 것이 좋습니다.
klew

6

Rails 4에서는 rails g controller apps new create update edit destroy show index

또는 rails generate controller apps new create update edit destroy show index전체 용어를 작성하려면 :).


그리고 더 긴 이름 (예 : line_items)을 가진 컨트롤러의 경우 rails g controller LineItems
Tommyixi

1
rails g scaffold_controller appsRails 4에서 사용할 수 있습니다
wrdevos 2015 년

2

rspec_scaffold 속성 스크립트 / 생성


그리고 네, 당신이 이미 이것에 대한 답변을 수락했다는 것을 알고 있지만이 솔루션이이 게시물을 읽는 일부 사람들에게도 도움이 될 것이라고 생각합니다 .... 위의 솔루션은 모델 등을 만들 것입니다. 당신은 필요가 없다 할
stephenmurdoch

0

스캐 폴딩을 통해서를 제외하고는 컨트롤러를 스텁 아웃 할 방법이 없습니다 (내가 알고있는 것입니까? 문서화되어 있습니까?). 하지만 다음과 같이 할 수 있습니다.

script/generate controller WhateverController new create edit update destroy show

대단한 대답입니다. 액션을 놓치고 있다고 생각합니다. 7 개의 액션이 없습니까?
Barb

0

한 가지 해결책은 하나의 매개 변수 인 컨트롤러 이름을 받아들이는 스크립트를 만들고 스크립트가 전체 명령을 입력하도록하는 것입니다.


  1. railsgcontroller와 같은 새 파일을 만듭니다.
  2. 실행 가능하게 만들고 경로에 저장하십시오.
  3. 다음과 같이 실행하십시오 : $ railsgcontroller 기사

die () {
    echo "Please supply new rails controller name to generate."
    echo >&2 "$@"
    exit 1
}

[ "$#" -eq 1 ] || die "1 argument required, $# provided"

rails g controller "$1" new create update edit destroy show index
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.