2012-07-06 10 views

Trả lời

14

Về bản chất, tài nguyên định tuyến là khi tài nguyên cung cấp khả năng hành động cho bộ điều khiển.

http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use

Nếu một nguồn tài nguyên số nhiều được sử dụng như một cách để xử lý yêu cầu chung vào bất kỳ mục, sau đó một nguồn tài nguyên số ít là một cách để làm việc trên các mục hiện trong tầm tay. Vì vậy, nói cách khác, nếu tôi có một bộ sưu tập của Táo, để lấy một quả táo cụ thể, tôi phải nói cho bộ định tuyến "Táo" những gì táo để lấy bằng cách gửi ID của quả táo. Nếu tôi đã có một Apple, sau đó một ID là không cần thiết.

Chú ý sự khác biệt giữa hai bằng cách nhìn vào những hành động (hoặc các tuyến đường) chúng ta có: nguồn

  • : Index, mới, tạo, trình diễn, chỉnh sửa, cập nhật, phá hủy
  • tài nguyên: mới, tạo, hiển thị, chỉnh sửa, cập nhật, phá hủy

Trong ví dụ của bạn:

  1. Bộ điều khiển địa lý là một tài nguyên số ít mà bạn có thể sử dụng để chỉnh sửa, tạo, cập nhật, v.v.
  2. Bộ điều khiển "bài đăng" là tài nguyên số nhiều sẽ xử lý các bài đăng chung mà bạn có thể lập chỉ mục, chỉnh sửa tạo nên..vv
+1

nhầm lẫn của tôi: là những gì các điểm trong việc tạo ra nguồn lực đặc biệt; cho phép nói rằng chúng ta đã định nghĩa 'resource: geocoder'; có nghĩa là chúng ta sẽ có một bản ghi 'geocoder' duy nhất trong toàn bộ' bảng' được gọi là 'bộ mã hóa địa lý '? – illusionist

+2

Trong liên kết đến bài viết (đã được cập nhật từ lâu kể từ khi tôi đăng bài này), họ thực sự đã đưa ra một ví dụ tốt. Một tài nguyên số ít được gọi là/profile (thay vì/profile: id), sẽ hữu ích để luôn hiển thị hồ sơ của người dùng hiện đang đăng nhập. Vì vậy, một trình mã hóa địa lý số ít có thể thuộc về vị trí của người dùng hiện tại, nơi mà các trình mã địa lý số nhiều có thể thuộc về một tập hợp các địa điểm lân cận. Nó sẽ tùy thuộc vào bạn nếu bạn muốn đưa mã địa lý của riêng bạn vào bộ sưu tập đó. – sksallaj

8

http://guides.rubyonrails.org/routing.html#singular-resources

Đôi khi, bạn có một nguồn lực mà khách hàng luôn tìm kiếm mà không tham khảo ID. Ví dụ: bạn muốn/hồ sơ luôn hiển thị tiểu sử của người dùng hiện đã đăng nhập. Trong trường hợp này, bạn có thể sử dụng một tài nguyên số ít để ánh xạ/cấu hình (thay vì/profile /: id) thành hành động hiển thị .

Một cách hay để xem đó là tài nguyên không có hành động chỉ mục, vì nó được cho là chỉ một.

3

tôi nghĩ chỉ là chế độ xem chỉ mục.

cũng đã xảy ra sự cố với định tuyến với người trợ giúp tài nguyên và người trợ giúp biểu mẫu. cá nhân, tôi sử dụng cú pháp:

resources :someresource, except: :index 

để tránh reported bugs.

4

Tài Số ít:

Đôi khi, bạn có một nguồn lực mà khách hàng luôn tìm kiếm mà không cần tham khảo một ID. Ví dụ: bạn muốn /profile luôn hiển thị hồ sơ của người dùng hiện đã đăng nhập.

Hoặc, thường trong đăng nhập người dùng hiện của bạn thuộc về một tổ chức duy nhất, vì vậy để goto trang hồ sơ của anh/cô tổ chức có thể có hai tuyến đường

#1 
/organizations/:id 

#2 
/organization #simply 

Ở đây, việc thực hiện sau ý nghĩa hơn; không phải nó? bạn sẽ có được các đối tượng tổ chức từ hiệp hội

# in organizations#show 
@organization = current_user.organization 

Để xác định tài nguyên số ít như bạn sử dụng resource phương pháp: Ví dụ

# in routes.rb 
resource :organization 

tạo Sáu tuyến đường khác nhau trong ứng dụng của bạn, tất cả các bản đồ với bộ điều khiển tổ chức:

enter image description here

trong khi, bạn xác định tài nguyên số nhiều bằng cách sử dụng resources phương pháp

resources :organizations 

enter image description here