2010-04-26 5 views
7

मैं link_to ब्लॉक घोषणा में क्वेरी स्ट्रिंग और यूआरएल पैरामीटर कैसे प्राप्त कर सकता हूं? अभी, मैं इस किया है, जो काम करता है:रेल: लिंक_to ब्लॉक के साथ और पैरा प्राप्त करें?

<%= link_to 'Edit', :edit, :type => 'book', :id => book %> 

ऊपर काम करता है, और आउटपुट:

http://localhost:3000/books/edit/1?type=book 

मुझे क्या करना चाहते हैं कुछ इस तरह है:

<% link_to :edit, :type => 'book', :id => book do %> 
    ... 
<% end %> 

लेकिन उपरोक्त प्रारूप आउटपुट:

http://localhost:3000/books/edit/ 

कौन सा है जो मैं ढूंढ रहा हूं वह नहीं ... मैं चाहता हूं कि यह पिछले उदाहरण की तरह यूआरएल आउटपुट करे।

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

उत्तर

0

कोशिश follwing

<% link_to(:edit, :type => 'book', :id => book) do %> 
    ... 
<% end %> 

या प्राप्त करने के लिए एक ही URL का उपयोग

<% link_to(:action=>'edit', :type => 'book', :id => book) do %> 
    ... 
<% end %> 
13

link_to एक ही विकल्प है कि url_for करता है लेता है। ऐसा कहकर, :type विकल्प नहीं है और यह वास्तव में ब्लॉक स्वीकार नहीं करता है, इसलिए मेरा अनुमान है कि आपका दूसरा उदाहरण काम करता है क्योंकि यह पुस्तक दृश्य के दायरे में स्थित है। जैसा कि इस उत्तर के उत्तर में Tom द्वारा वर्णित है, link_to पर एक ब्लॉक पास करने से पहले तर्क (लिंक टेक्स्ट) के प्रतिस्थापन के रूप में उपयोग किया जा सकता है।

यदि पुस्तक एक संसाधन है, तो आप link_to सहायक प्राप्त कर सकते हैं ताकि आप जिस यूआरएल को खोज रहे हैं उसे उत्पन्न कर सकें, इसे आसानी से वितरित संसाधन मार्गों में से एक रेल आपके लिए बनाता है। भागो rake routes इससे पहले कि आप इस प्रयास करें:

<%= link_to "Edit", edit_book_path(book) %> 

अन्यथा, आप स्पष्ट रूप से यह कर सकते हैं क्या नियंत्रक/कार्रवाई आप लिंक करना चाहते हैं:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %> 

हैप्पी हैकिंग।

संपादित करें: लगभग भूल गए हैं, आप उस ऑब्जेक्ट की आईडी घोषित करने के बाद क्वेरी स्ट्रिंग जोड़ सकते हैं जब आप उस ऑब्जेक्ट की आईडी घोषित करते हैं जिसे आप लिंक कर रहे हैं।

<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value") 

उत्पाद /books/1/edit?query1=value&query2=value होगा। वैकल्पिक रूप से: आप link_to या book को do ... end ब्लॉक भेज रहे हैं, और यह book को भेज रहा है, क्योंकि यह ब्लॉक के करीब है अगर

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %> 
+1

ब्लॉक ' टैग' भीतर जगह इनपुट पर कब्जा करने का एक तरीका हो रहा है। http://railsapi.com/doc/rails-v2.3.5/classes/ActionView/Helpers/UrlHelper.html#M002452 –

0

रूबी नहीं जानता है। book do ... endnil देता है, इसलिए आपको link_to :edit, :type=>'book', :id=>nil के साथ छोड़ दिया गया है। आपको पैरामीटर को ब्रैकेट करने की आवश्यकता होगी, और जब आप इसमें हों, तो मैं इसे नियंत्रक, एक्शन, आईडी सेटअप के साथ अधिक समझने योग्य बनाने के लिए फिर से लिखूंगा: link_to{:controller=>"books",:action=>"edit",:id=>book}do ... end

0

mime_types में।rb फ़ाइल जोड़ने:

माइम :: Type.register "text/आवेदन",: पुस्तक

+0

अनुरोध के लिए एक प्रकार जोड़ें –