ruby on rails - Link_to पर querystring पैरामीटर जोड़ें




ruby-on-rails query-string (3)

मैं urlHelper को link_ करने के लिए क्वेरीस्ट्रिंग पैरामीटर को मुश्किल से जोड़ रहा हूं। मेरे पास एक इंडेक्स व्यू है, उदाहरण के लिए, जिसमें सॉर्टिंग, फ़िल्टरिंग और पेजिनेशन (will_paginate के माध्यम से) के लिए UI तत्व हैं। Will_paginate प्लगइन क्वेरीस्ट्रिंग पैरामीटर के इंट्रा-पेज दृढ़ता को सही तरीके से प्रबंधित करता है।

क्या नाम देने वाले रूट पर क्वेरीस्ट्रिंग पैरामीटर जोड़ने के लिए कोई स्वचालित तंत्र है, या मुझे मैन्युअल रूप से ऐसा करने की आवश्यकता है? इस प्रतीत होता है कि इस सरल सरल निर्माण पर शोध का एक बड़ा सौदा मुझे अनजान छोड़ दिया है।

संपादित करें

कुछ चुनौतियां:

  1. यदि मेरे पास दो क्वेरीस्ट्रिंग पैरामीटर, बाल्टी और सॉर्टिंग है, तो दूसरे के वर्तमान मूल्य को संरक्षित करते समय, इनमें से किसी एक को लिंक_to में एक विशिष्ट मान कैसे सेट करें? उदाहरण के लिए:

    <%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
    
  2. यदि मेरे पास एकाधिक क्वेरीस्ट्रिंग पैरामीटर, बाल्टी और सॉर्टिंग और पेज_ साइज है, और मैं मान को इनमें से किसी एक पर सेट करना चाहता हूं, तो शेष पैरामीटर के नाम और मानों को 'स्वचालित रूप से' करने का कोई तरीका है? उदाहरण के लिए:

    <%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
    
  3. Will_paginate प्लगइन अपने पेज वैरिएबल और अन्य क्वेरीस्ट्रिंग चर स्वचालित रूप से प्रबंधित करता है। पेज आकार के प्रबंधन के लिए एक स्वचालित यूआई तत्व प्रतीत नहीं होता है। जबकि मैंने पेज आकारों की एक चुनिंदा सूची बनाने के लिए कोड देखा है, इसके बजाय मेरे पास इसके लिए एक तत्व होगा (जैसे SO)। इस चुनौती का हिस्सा # 2 से संबंधित है, भाग रिकॉर्ड के अस्तित्व / अस्तित्व के आधार पर इस यूआई तत्व को छिपाने / दिखाने से संबंधित है। एक और तरीके से कहा, यदि पृष्ठ पर रिकॉर्ड हैं तो मैं केवल पेज-आकार लिंक शामिल करना चाहता हूं। इसके अलावा, मैं link_to में नाम से उन्हें शामिल करने के बजाय अन्य QS चर (यानी पृष्ठ, बाल्टी, सॉर्टिंग) को स्वचालित रूप से शामिल करना पसंद करता हूं।


Link_to पर एपीआई दस्तावेज़ नाम और पुराने स्टाइल मार्ग दोनों में क्वेरीस्ट्रिंग जोड़ने के कुछ उदाहरण दिखाते हैं। क्या ये वही है जो तुम चाहते हो?

link_to एंकर या क्वेरी स्ट्रिंग्स के साथ लिंक भी बना सकता है:

link_to "Comment wall", profile_path(@profile, :anchor => "wall")
#=> <a href="/profiles/1#wall">Comment wall</a>

link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails"
#=> <a href="/searches?query=ruby+on+rails">Ruby on Rails search</a>

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux")
#=> <a href="/searches?foo=bar&amp;baz=quux">Nonsense search</a>

यदि आप किसी ब्लॉक में पास करना चाहते हैं, तो निम्न में से एक ग्लाइफ़िकॉन बटन के लिए कहें:

<%= link_to my_url, class: "stuff" do %>
  <i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>

फिर क्वेरीस्ट्रिंग पैराम पास करने के माध्यम से पूरा किया जा सकता है:

<%= link_to url_for(params.merge(my_params: "value")), class: "stuff" do %>
  <i class="glyphicon glyphicon-inbox></i> Nice glyph-button
<% end %>

यदि आप मौजूदा पैरा को रखना चाहते हैं और एक्सएसएस हमलों के लिए खुद को बेनकाब नहीं करना चाहते हैं, तो पैरा हैश को साफ करना सुनिश्चित करें, केवल आपके द्वारा भेजे जा रहे पैराम को छोड़कर:

# inline
<%= link_to 'Link', params.slice(:sort).merge(per_page: 20) %>

यदि आप इसे कई स्थानों पर उपयोग करते हैं, तो नियंत्रक में पैरा साफ़ करें:

# your_controller.rb
@params = params.slice(:sort, :per_page)

# view
<%= link_to 'Link', @params.merge(per_page: 20) %>






query-string