के साथ नामित मार्गों का उपयोग करके मैं रेल में एक साधारण खोज फ़ॉर्म बनाने की कोशिश कर रहा हूं, लेकिन मुझे लगता है कि मुझे कुछ याद आ रही है।पैरामीटर और form_tag
map.search ":first_name/:last_name", :controller => "home", :action => "search"
मैं उपयोग करने के लिए है कि मेरी खोज के रूप में कोशिश कर रहा हूँ:
<% form_tag(search_path, :method => 'get') do %>
<%= text_field_tag(:first_name) %>
<%= text_field_tag(:last_name) %>
<%= submit_tag("Search") %>
<% end %>
लेकिन जब मैं खोज प्रपत्र लोड मैं एक ActionController मिल
मैं खोज के लिए एक नामित मार्ग है :: रूटिंग एरर:
search_url failed to generate from {:action=>"search", :controller=>"home"} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: [:first_name, :last_name] - are they all satisfied?
मुझे क्या याद आ रही है? मैंने सोचा कि मेरे रूप में परिभाषित फ़ील्ड स्वचालित रूप से मेरे मार्ग पैरामीटर से जुड़े होंगे। : -/
अद्यतन:
मैं समझता हूँ से पहले फॉर्म अब प्रदर्शित किया जाता है कि search_path उत्पन्न होता है, तो यह अद्यतन नहीं किया जा सकता है। अंधेरे में स्पष्ट!
मैं अपने मार्गों बदल दिया है:
map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
और अब search
कार्रवाई सिर्फ करता है:
def search
redirect_to name_path(params)
end
यह सब एक इलाज काम करता है! यहां मुख्य लक्ष्य नाम नाम से उस URL को खोज करने के परिणामस्वरूप रूट प्राप्त कर रहा था। धन्यवाद दोस्तों!
मुझे अभी यह आपके विकल्प # 2 के साथ काम मिला है - मैंने एक और मार्ग और दूसरी कार्रवाई बनाई है। धन्यवाद! –
शायद यह दोनों तरीकों से करना बेहतर होगा। तो इसे करें 2. डिफ़ॉल्ट रूप से रास्ता और यदि जेएस काम कर रहा है तो जेएस के साथ 'एक्शन' बदलें - ताकि यह रीडायरेक्ट किए बिना काम कर सके। – klew