Tạo bộ điều khiển với tất cả các chức năng RESTful


86

Tôi đang cố gắng tạo một bộ điều khiển với tất cả các hành động RESTful đều được thực hiện. Tôi đã đọc tại Wikibooks - Ruby on Rails rằng tất cả những gì tôi cần làm là gọi trình tạo bằng tên bộ điều khiển và tôi sẽ nhận được điều đó. Vì vậy, tôi đã chạy script/generate rspec_controller Propertiesnhưng nhận được một bộ điều khiển trống.

Bất kỳ đề xuất khác sẽ được đánh giá rất cao.


1
thenduks, Nếu tôi có kinh nghiệm như bạn thì điều đó là đúng, nhưng tôi thậm chí không biết 7 hành động yên tĩnh ngoài đầu của tôi, vì vậy tôi sẽ phải google mục và sau đó chuyển đổi qua lại giữa trang và ứng dụng để nhập từng cái. Một khi tôi biết họ, tôi đồng ý rằng giải pháp của bạn dễ dàng hơn
Barb

Câu trả lời:


143

Tôi không biết về cách thực hiện tự động, nhưng nếu bạn làm như vậy:

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

Tất cả chúng sẽ được tạo ra cho bạn

Cập nhật cho Rails 4

rails g scaffold_controller Property

7
Câu trả lời chính xác. Các chuyên gia có thể bỏ qua phần còn lại. Lưu ý cho noobs - nếu bạn đặt tên bộ điều khiển của mình là PropertyController như tôi đã hiểu nhầm :) bạn sẽ nhận được Bộ điều khiển PropertyController :)
Barb

2
Câu trả lời của tôi thực hiện chính xác điều tương tự - ngoại trừ bạn không cần chỉ định tất cả 7 hành động mặc định.
konung

4
Chỉ cần lưu ý ... điều này chỉ tạo ra một bộ điều khiển với các phương thức được đặt tên cho các hành động CRUD cơ bản. Các tuyến đường còn xa RESTful ... ví dụ như route get "mycontroller/create"(tạo nên một bưu điện)
rthbound

Tôi đồng ý rằng câu trả lời này phù hợp hơn cho các hành động tùy chỉnh chung chung, nó không thực sự tôn trọng quy ước RESTful được mong muốn.
prusswan

Câu trả lời này là lỗi thời đối với đường ray câu trả lời 4. Xem konung cho Rails 4.
toobulkeh

97

Trong Rails 3 cũng có rails generate scaffold_controller .... Thông tin thêm ở đây .


1
Tôi thích phương pháp này hơn vì nó tạo ra các tuyến RESTful. Việc sử dụng rails g controller Foos createsẽ tạo ra một tuyến đường get '/create'không RESTful chút nào.
rthbound

37

CHỈNH SỬA (do một số nhận xét) : Câu hỏi ban đầu là vào năm 2010 - do đó câu trả lời KHÔNG dành cho RAILS 4, mà dành cho rails 2 !!

thử sử dụng giàn giáo.

script/generate scaffold controller Properties

Phần tài liệu chính thức về Ruby On Rails

Tôi chắc rằng bạn có thể tìm thêm thông tin nếu bạn tìm kiếm trên google về giàn giáo ray. Hy vọng rằng sẽ giúp.

CHỈNH SỬA: Đối với RAILS 4

rails g scaffold_controller Property


bạn có thể tập lệnh / tạo Thuộc tính bộ điều khiển rspec_scaffold không?
Barb

đúng bạn có thể. Đây là thông tin / hướng dẫn chi tiết: blog.davidchelimsky.net/2007/05/14/…
konung

Tôi nghi ngờ câu trả lời này đã lỗi thời đối với các phiên bản Rails gần đây. Nó sẽ chỉ đơn giản là tạo ra toàn bộ giàn giáo cho đối tượng / mô hình được gọi là "controller"
prusswan

4
Có, nó đã được viết vào năm 2010 cho phiên bản 2. một cái gì đó như sau từ câu hỏi. Bây giờ (Rails 4) nó sẽ trông như thế này: đường ray g scaffold_controller tuệ (scaffold_controller sẽ gọi giàn giáo và bạn cần cung cấp tên mô hình (số ít), nhưng không phải)
konung

2
Tôi có thể xác minh rằng nó cũng rails g scaffold_controller Propertyhoạt động trong rails 3.2. Điều này sẽ tạo ra một PropertiesController với TẤT CẢ 7 hành động RESTful mặc định và các khung nhìn tương ứng của chúng, không có mô hình.
mkralla 11

15

Trong Rails 4/5, lệnh sau thực hiện thủ thuật cho tôi.

rails g scaffold_controller Property --skip-template-engine

Nó tạo ra các hành động của bộ điều khiển nhưng không tạo ra chế độ xem.


9

Đường ray 5.1

Điểm khởi đầu:

Bạn đã tạo một mô hình mà không có bộ điều khiển, cũng không có khung nhìn (ví dụ: thông qua rails generate model category:)

Mục tiêu:

Nâng cấp nó lên tài nguyên RESTful đầy đủ

Chỉ huy:

rails generate scaffold_controller category

Nó khai ra một bộ điều khiển có khung, bảy hành động RESTful và các khung nhìn liên quan. (Lưu ý: Bạn có thể chuyển tên kiểu máy là CamelCased hoặc under_scored.)

Đầu ra:

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

Bạn đang tìm kiếm giàn giáo.

Thử:

script/generate scaffold Property

Điều này sẽ cung cấp cho bạn một bộ điều khiển, một mô hình, quá trình di chuyển và các thử nghiệm liên quan. Bạn có thể bỏ qua quá trình di chuyển với tùy chọn --skip-migration. Nếu bạn không muốn những người khác, bạn sẽ phải tự xóa chúng. Đừng lo lắng về việc ghi đè các tệp hiện có, điều đó sẽ không xảy ra trừ khi bạn sử dụng --force.

Như klew đã chỉ ra trong các nhận xét, điều này cũng xác định các cơ quan phương thức cho bạn, không chỉ tên. Nó rất hữu ích khi sử dụng làm điểm khởi đầu cho bộ điều khiển REST của bạn.


@Barb, tôi nghĩ Scaffolding sẽ tốt hơn cho bạn vì nó không chỉ khai báo tất cả các chức năng mà còn định nghĩa chúng. Tốt là bạn nên tạo chúng ít nhất một lần và lấy chúng làm ví dụ.
klew

6

Trong Rails 4 nó rails g controller apps new create update edit destroy show index

Hoặc rails generate controller apps new create update edit destroy show indexnếu bạn muốn viết ra điều khoản đầy đủ :).


Và đối với các bộ điều khiển với một tên dài hơn (như line_items), đường ray g Chi tiết đơn hàng điều khiển
Tommyixi

1
Bạn chỉ có thể sử dụng rails g scaffold_controller appstrong Rails 4
wrdevos 14/09/15

2

script / tạo Thuộc tính rspec_scaffold


và vâng, tôi nhận thấy rằng bạn đã chấp nhận câu trả lời cho câu trả lời này, nhưng tôi cảm thấy giải pháp này có thể giúp ích cho một số người đọc bài đăng này .... giải pháp ở trên sẽ tạo ra một mô hình, v.v., bạn có thể xóa nếu bạn không cần
stephenmurdoch

0

Không có cách nào (mà tôi biết? Điều đó được ghi lại?) Để khai thác một bộ điều khiển ngoại trừ thông qua giàn giáo. Nhưng bạn có thể làm:

script/generate controller WhateverController new create edit update destroy show

Câu trả lời tuyệt vời, tôi nghĩ rằng bạn đang thiếu một hành động phải không? 7 hành động?
Barb

0

Một giải pháp là tạo một tập lệnh chấp nhận một tham số, tên bộ điều khiển và để tập lệnh nhập toàn bộ lệnh cho bạn.


  1. Tạo một tệp mới, chẳng hạn như, railsgcontroller
  2. Làm cho nó có thể thực thi và lưu nó trên đường dẫn
  3. Chạy nó như: $ railsgcontroller Articles

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.