answer सिमोन Carletti वास्तव में काम करता है, लेकिन कई बार जब एक यूआरएल रेल मार्ग मार्गदर्शिका में बताए अनुसार वस्तुओं का उपयोग कर निर्माण करने के लिए, और _path
सहायकों पर भरोसा नहीं करना चाहता है।
Ben और Swards दोनों के उत्तरों का वर्णन करने का प्रयास करने का प्रयास कर रहे हैं, लेकिन मेरे लिए सिंटैक्स का उपयोग एक त्रुटि में होता है (रेल 4.2.2 का उपयोग करके, जिसका 4.2.4 के समान व्यवहार होता है, जो कि है इस उत्तर के रूप में वर्तमान स्थिर रिलीज)।
वस्तुओं में से किसी URL/पथ बनाने के दौरान भी पैरामीटर प्रदान करने के होना चाहिए, के रूप में एक नेस्टेड सरणी, बल्कि एक फ्लैट सरणी URL में घटक युक्त, प्लस अंतिम तत्व के रूप में एक हैश का विरोध करने के लिए सही सिंटैक्स:
url_for([:edit, @post, my_parameter: "parameter_value"])
यहां पहले दो तत्व URL के घटकों के रूप में पार्स किए गए हैं, और हैश को यूआरएल के लिए पैरामीटर के रूप में माना जाता है।
यह भी link_to
साथ काम करता है:
link_to("Link Text", [:edit, @post, my_parameter: "parameter_value"])
जब मैं url_for
फोन के रूप में बेन & Swards ने सुझाव दिया:
url_for([[:edit, @post], my_parameter: "parameter_value"])
मैं निम्नलिखित त्रुटि मिलती है:
ActionView::Template::Error (undefined method 'to_model' for #<Array:0x007f5151f87240>)
निशान से पता चलता है कि इस से routing_url_for.rb
(ActionView::RoutingUrlFor
) ActionDispatch::Routing
में polymorphic_routes.rb
से बुलाया जा रहा है, url_for
के माध्यम से:
gems/actionpack-4.2.2/lib/action_dispatch/routing/polymorphic_routes.rb:297:in `handle_list'
gems/actionpack-4.2.2/lib/action_dispatch/routing/polymorphic_routes.rb:206:in `polymorphic_method'
gems/actionpack-4.2.2/lib/action_dispatch/routing/polymorphic_routes.rb:134:in `polymorphic_path'
gems/actionview-4.2.2/lib/action_view/routing_url_for.rb:99:in `url_for'
समस्या जा रहा है, कि यह URL में घटक की एक सरणी (जैसे की उम्मीद कर रहा है। प्रतीकों, मॉडल वस्तुओं, आदि), एक सरणी जिसमें एक और सरणी है।
उचित coderouting_url_for.rb
से को देखते हुए, हम देख सकते हैं कि जब यह एक सरणी जो अंतिम तत्व के रूप में एक हैश है, प्राप्त करता है यह तो extract हैश और पैरामीटर के रूप में व्यवहार करेगा, यूआरएल घटकों के साथ फिर बस सरणी छोड़ने ।
यही कारण है कि पिछले तत्व के रूप में हैश के साथ फ्लैट सरणी काम करता है, और नेस्टेड सरणी नहीं है।
मैं इस तरह एक पूर्ण पथ कैसे बना सकता हूं? – shredding
'_path' के बजाय' _url' का उपयोग करें: 'edit_post_url (@post,: qp => "asdf") ' –