2013-04-29 16 views
11

Tôi là một người mới hoàn toàn trong Rails.Cách sử dụng Link_to với các tài nguyên lồng nhau

Tôi đã tạo một ứng dụng web, tôi có thể truy cập thông qua /posts/123/comments/ hoặc /posts/123/comments/new, nhưng tôi không biết cách sử dụng link_to trong chế độ xem chỉ mục để hiển thị nhận xét cụ thể, khi tôi cố liên kết, xuất hiện "không có tuyến đường "hoặc" biểu tượng không xác định ".

Tôi có mối quan hệ has_many lồng nhau giữa các bài đăng và nhận xét được xác định trong các mô hình và trong routes.rbpost_comments GET /posts/:post_id/sensors(.:format)comments#index xuất hiện khi tôi thực thi các tuyến đường rake.

Tôi có thể làm như thế nào?

Trả lời

7

Sau khi thử tất cả các câu trả lời nó didnt hoàn toàn làm việc, nhưng tôi tìm thấy một cách để giải quyết nó. Trong một giây phút đầu tiên, tôi đã sử dụng

post_comments_url (@ bài, bình luận)

nơi bình luận là mục bên trong một @ post.each.

Nó tạo ra một con đường "lạ", sử dụng. thay/như "bài/34/comments.2", tôi cố định nó bằng cách sử dụng hình thức số ít:

post_comment_url (@ bài, bình luận)

Cảm ơn vì đã giúp!

+0

bạn đã thử' link_to 'show', [@post, comment] '? – toch

12

Nếu bạn đã xác định nguồn lực lồng nhau (và dĩ nhiên là mô hình của bạn CommentPost có liên quan)

resources :posts do 
resources :comments 
end 

Bạn có thể liên kết một lời nhận xét như sau

<!-- /posts/:post_id/comments/:id --> 
<%= link_to 'Show', [@comment.post, @comment] %> 

Tôi đã viết một full example of nested resources in a past blog post

+0

Tôi đã thay đổi mã của mình thành <% @ posts.each do | item | %> <% = item.nombre%> <% = item.info%> <% = link_to 'Show', [@ comment.post, @comment]%> <% end %> và nó doesnt chạy ... xuất hiện một bài viết phương thức không xác định. Tôi có thể làm như thế nào? Cảm ơn! – fuco

+0

Đó có thể là do mô hình 'Nhận xét' của bạn không được liên kết với 'Bài đăng'. Bạn nên có 'attribute_to: post' trong mô hình' Comment' của bạn. Nếu không, đó là bình thường nó không xác định. Bạn cũng có thể thay thế '@ comment.post' bằng đối tượng' Post' chứa chú thích (có thể là 'mục' trong trường hợp của bạn). – toch

+0

Điều đó không có tác dụng đối với tôi: nó phàn nàn rằng 'post_comment_path' là không xác định (định tuyến hiển thị trong' rake routes' là 'post_comments', số nhiều) – digitig

0

Ngoài câu trả lời của toch, bạn có thể gỡ lỗi liên kết_để gọi với trợ giúp của bảng điều khiển Rails.

Đối với điều này, bạn cần phải nạp những người giúp đỡ xem trong giao diện điều khiển:

irb(main):001:0> include ActionView::Helpers::UrlHelper 
=> Object 
irb(main):002:0> helper.link_to "posts", app.posts_path 
=> "<a href=\"/posts\">foo</a>" 

công cụ khác, tương tự như Rake tuyến đường cho lộ trình gỡ lỗi là: https://github.com/schneems/sextant

1

Nhận tên phương pháp từ cột đầu tiên của

rake routes 

Và chuyển id cho phù hợp. Và dĩ nhiên hậu tố tên phương pháp với _path ir _url Để biết thêm, hãy truy cập Rails guide