आप रूबी के वाक्यात्मक चीनी से उलझन में हो रहे हैं (जो रेल दरियादिली से उपयोग करता है)। अपने प्रश्न का उत्तर देने से पहले मुझे संक्षेप में समझाएं।
एक गहरे लाल रंग का समारोह एक एकल पैरामीटर एक हैश है कि लेता है जब:
def foo(options)
#options is a hash with parameters inside
end
आप कोष्ठक/कोष्ठक डाल करने के लिए 'भूल' कर सकते हैं और इसे इस तरह कहते हैं:
foo :param => value, :param2 => value
रूबी रिक्त स्थान भरेंगे और समझेंगे कि आप जो करने की कोशिश कर रहे हैं वह यह है:
foo({:param => value, :param2 => value})
अब, आपके प्रश्न पर: link_to
दो वैकल्पिक हैश - एक को options
और अन्य html_options
कहा जाता है। आप कल्पना कर सकते हैं यह इस तरह परिभाषित किया गया है (यह एक सन्निकटन है, यह बहुत अधिक जटिल है)
def link_to(name, options, html_options)
...
end
अब अगर आप इसे इस तरह आह्वान:
link_to 'Comments', :name => 'Comments'
रूबी थोड़ा भ्रमित मिल जाएगा। यह आप के लिए "रिक्त स्थानों को भरने के" करने की कोशिश करेंगे, लेकिन गलत तरीके से:
link_to('Comments', {:name => 'Comments'}, {}) # incorrect
ऐसा नहीं है कि name => 'Comments'
हिस्सा विकल्प के अंतर्गत आता है सोचेंगे, html_options
के लिए नहीं!
आपको रिक्त स्थान भरकर रूबी की मदद करनी है। स्थान में सभी कोष्ठक रखो और यह अपेक्षा के अनुरूप व्यवहार करेंगे:
link_to('Comments', {}, {:name => 'Comments'}) # correct
आप वास्तव में कोष्ठक के अंतिम सेट निकाल सकते हैं अगर आप चाहते हैं:
link_to("Comments", {}, :name => "comments") # also correct
आदेश html_options का उपयोग करने के लिए आपको छोड़ देना चाहिए हालांकि, ब्रैकेट का पहला सेट।उदाहरण के लिए, आप पुष्टि संदेश और नाम के साथ एक कड़ी के लिए यह करने के लिए की आवश्यकता होगी:
link_to("Comments", {:confirm => 'Sure?'}, :name => "comments")
अन्य रेल सहायकों एक समान निर्माण (अर्थात form_for
, collection_select
) है, तो आप इस तकनीक सीखना चाहिए। संदेह में, बस सभी कोष्ठक जोड़ें।
समझ नहीं है कि तुम क्या * स्पष्ट रूप से * लिखा था के लिए खेद के लिए! मेरी गलती! खुशी है कि आपको जवाब मिल गया है। मैंने अपना हटा दिया ताकि किसी को भी भ्रमित न किया जा सके :) –