2011-10-06 39 views
8

Tôi vừa cài đặt Ruby on Rails và tạo một giàn giáo có tên là posts. RoR tạo ra bộ điều khiển và các tập tin cần thiết khác cho tôi.Làm thế nào để thay đổi tuyến đường trong ruby ​​trên đường ray?

Tôi đã tạo phương thức mới trong posts_controller, nhưng tôi không thể truy cập nó. Tôi nhìn vào các phương pháp khác có trong bộ điều khiển và có vẻ như tôi cần truy cập chúng bằng /posts/[MY POST ID]/[MY METHOD NAME].

Giả sử tôi đã tạo phương thức tùy chỉnh hello trong bộ điều khiển, làm cách nào để truy cập vào phương thức này?

Tôi đã xem routes.rb nhưng không có cấu hình cho nó.

Cập nhật:

Tôi hiểu rằng tôi có thể tự cấu hình nó trong routes.rb, nhưng làm thế nào để tất cả các phương pháp khác làm việc? Ví dụ: tôi có các phương thức "edit" và "update" trong bộ điều khiển "posts_controller.rb". Hai phương thức này hoạt động như thế nào nếu không định cấu hình tuyến đường?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

Tôi không thể tìm thấy cấu hình khớp với mẫu /posts/[0-9]/edit.

Trả lời

9

Tài liệu bạn đang tìm kiếm là Rails Routing From the Outside In. Một khi bạn đã đọc nó, bạn sẽ hiểu mọi thứ Rails thực hiện theo yêu cầu của bạn và trỏ nó vào phương thức trong bộ điều khiển của bạn.

3

Trong Rails 3.x

match 'posts/hello' => 'posts#hello'

trống trong example.com/posts/hello

4

này sẽ cung cấp cho bạn một khởi đầu tốt trên các tuyến đường: http://guides.rubyonrails.org/routing.html

Không phải tất cả phương pháp bạn tạo sẽ có đường dẫn riêng của nó, đường ray được xây dựng trên nguyên tắc còn lại và khung của bạn đã tạo các phương thức trong trình điều khiển bài theo các đường dẫn đó, như chỉ mục, hiển thị v.v.

Bạn có thể buộc phương pháp của bạn có một tuyến đường được thêm vào nó, nhưng trong thực tế bạn hiếm khi thực sự cần phải làm như vậy theo quy ước là dễ dàng hơn nhiều.

5

Bạn cần thêm tuyến đường cho số đó vào routes.rb. Ví dụ:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

Hãy xem Rails guide about routing này, nó sẽ giúp bạn hiểu định tuyến Rails.

1

Khi bạn sử dụng giàn giáo để tạo bài đăng, nó đã thêm một dòng resources :posts vào tệp routes.rb của bạn. Dòng đó cấu hình các tuyến cho tất cả các hành động của bộ điều khiển đã được tạo. Như Caleb đề cập ở trên, không phải mọi hành động đều có một con đường chuyên dụng. Một đường dẫn duy nhất có thể tương ứng với nhiều hành động vì đường ray cũng tính đến phương thức HTTP. Vì vậy, ví dụ, đường dẫn /posts với phương thức HTTP GET tương ứng với hành động điều khiển index, trong khi cùng một đường dẫn với phương thức HTTP PUT tương ứng với hành động điều khiển update. Bạn có thể xem các liên kết này khi bạn chạy rake routes từ bảng điều khiển.Tôi đồng ý với Jordan và Caleb rằng Rails Guides là một tài liệu đọc tốt và sẽ giúp bạn hiểu các tuyến đường.

+0

// Cảm ơn bạn đã trả lời !. Làm cách nào để ROR định cấu hình các tuyến đường bằng cách đọc một dòng mã (tài nguyên: bài đăng)? – Moon

+0

Tôi chưa xem mã nguồn để xem chính xác Rails làm như thế nào, nhưng khi bạn sử dụng 'tài nguyên' Rails thiết lập 7 tuyến. Xem phần 2.2 của hướng dẫn nói trên: http://guides.rubyonrails.org/routing.html – John

+0

Tôi chưa bao giờ tìm thấy giải thích tốt hơn về các khái niệm cơ bản về tuyến đường so với hướng dẫn này: https://www.youtube.com/watch? v = g3SuV-A9bak & index = 3 & list = PLAC08CE3187BC75F1 – Mauddev

Các vấn đề liên quan