2013-04-29 7 views
11

मैं रेल में पूरी तरह से नौसिखिया हूं।नेस्टेड संसाधनों के साथ Link_to का उपयोग कैसे करें

मैं एक वेब अनुप्रयोग बनाया है, मैं /posts/123/comments/ या /posts/123/comments/new के माध्यम से उपयोग कर सकते हैं, लेकिन मैं कैसे सूचकांक ध्यान में रखते हुए LINK_TO उपयोग करने के लिए एक ठोस टिप्पणी को दिखाने के लिए पता नहीं है, जब मैं यह लिंक करने के लिए प्रयास करते हैं, "कोई मार्ग दिखाई देता है "या" अपरिभाषित प्रतीक "।

मैं पोस्ट और टिप्पणियों मॉडल में और routes.rb और post_comments GET /posts/:post_id/sensors(.:format)comments#index प्रकट होता है जब मैं रेक मार्गों पर अमल में परिभाषित के बीच एक नेस्टेड have_many रिश्ता नहीं है।

मैं इसे कैसे कर सकता हूं?

उत्तर

7

जवाब यह पूरी तरह से फ्लॉप काम के सभी की कोशिश के बाद, लेकिन मैं इसे हल करने के लिए एक रास्ता मिल गया। पहली बार एक पल में, मैं

post_comments_url (@ पोस्ट, टिप्पणी)

जहां टिप्पणी एक @ post.each अंदर मद है इस्तेमाल किया।

यह उपयोग करके "अजीब" मार्ग उत्पन्न करता है। बजाय/की तरह "पोस्ट/34/comments.2", मैं इसे विलक्षण रूप का उपयोग करते हुए तय:

post_comment_url (@ पोस्ट, टिप्पणी)

की मदद करने के लिए धन्यवाद!

+0

क्या आपने 'link_to 'show', [@post, comment] 'की कोशिश की है? – toch

12

आप नेस्टेड संसाधनों परिभाषित तो है (और निश्चित रूप से अपने मॉडल Comment और Post जुड़े रहे हैं)

resources :posts do 
resources :comments 
end 

आप निम्न

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

मैं एक full example of nested resources in a past blog post

लिखा है के रूप में एक टिप्पणी लिंक कर सकते हैं
+0

मैंने अपना कोड <% @ posts.each do | item | %> <% = आइटम।nombre%> <% = item.info%> <% = LINK_TO 'दिखाएँ', [@ comment.post, @comment]%> <% end %> और इसे चलाने के नहीं करता ... एक अपरिभाषित विधि पोस्ट दिखाई देते हैं। मैं इसे कैसे कर सकता हूं? धन्यवाद! – fuco

+0

ऐसा शायद इसलिए है क्योंकि आपका 'टिप्पणी' मॉडल 'पोस्ट' से जुड़ा नहीं है। आपके 'टिप्पणी' मॉडल में आपके पास 'belong_to: post' होना चाहिए। यदि नहीं, तो यह सामान्य है कि यह अनिर्धारित है। आप टिप्पणी 'पोस्ट' ऑब्जेक्ट के साथ '@ comment.post' को भी बदल सकते हैं जिसमें टिप्पणी (शायद आपके मामले में 'आइटम') है। – toch

+0

यह मेरे लिए काम नहीं कर रहा है: यह शिकायत करता है कि 'post_comment_path' अपरिभाषित है (' राक मार्ग 'में दिखाया जाने वाला रूटिंग' post_comments' है, बहुवचन) – digitig

0

अतिरिक्त रूप से टच के जवाब के लिए, आप रेल कंसोल की सहायता से अपने लिंक_to कॉल को डीबग कर सकते हैं।

इस के लिए, आप कंसोल में दृश्य सहायकों लोड करने के लिए की जरूरत है:

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>" 

एक अन्य उपकरण, समान मार्गों रेक करने के लिए मार्ग डिबगिंग के लिए है: के पहले स्तंभ से https://github.com/schneems/sextant

1

प्राप्त विधि नाम

rake routes 

और तदनुसार आईडी को पास करें। और हां प्रत्यय _path ir _url साथ विधि नाम में और अधिक जानने के लिए यहाँ जाएँ Rails guide

संबंधित मुद्दे