तो, यदि मैं लूप/टैग का संग्रह बनाकर बना देता हूं, तो मुझे उम्मीद है .. इन टैगों की एक सरणी:नेस्टेड content_tags आंतरिक एचटीएमएल से बच .. क्यों?
(1..5).to_a.map do
content_tag(:li) do
link_to("boo", "www.boohoo.com")
end
end
=> ["<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>"]
मैं उन पर शामिल होने के लिए कॉल करता हूं और मुझे अपेक्षित स्ट्रिंग मिलती है ...
(1..5).to_a.map do
content_tag(:li) do
link_to("boo", "www.boohoo.com")
end
end.join
=> "<li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li>"
हालांकि, अगर मैं एक ओल टैग में गहराई से एक स्तर को घोंसला करता हूं ...
content_tag(:ol) do
(1..5).to_a.map do
content_tag(:li) { link_to("boo", "www.boohoo.com") }
end.join
end
=> "<ol><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li></ol>"
मैं आंतरिक-एचटीएमएल पागलपन से बच गया !!!
रेल स्रोत कोड को देखते समय:
def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
if block_given?
options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
content_tag_string(name, capture(&block), options, escape)
else
content_tag_string(name, content_or_options_with_block, options, escape)
end
end
private
def content_tag_string(name, content, options, escape = true)
tag_options = tag_options(options, escape) if options
"<#{name}#{tag_options}>#{escape ? ERB::Util.h(content) : content}</#{name}>".html_safe
end
यह धोखे से दिखता है जैसे मैं बस कर सकता हूं: content_tag (: li, nil, nil, false) और यह सामग्री से बच नहीं है .. हालांकि:
content_tag(:ol, nil, nil, false) do
(1..5).to_a.map do
content_tag(:li, nil, nil, false) do
link_to("boo", "www.boohoo.com")
end
end.join
end
=> "<ol><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li><li><a href="www.boohoo.com">boo</a></li></ol>"
मैं अभी भी अवांछित html_escape सिंड्रोम से पीड़ित हूं ...
तो मुझे यह जानने का एकमात्र तरीका यह है कि:
content_tag(:ol) do
(1..5).to_a.map do
content_tag(:li) do
link_to("boo", "www.boohoo.com")
end
end.join.html_safe
end
=> "<ol><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li></ol>"
लेकिन .. ऐसा क्यों होता है?
क्या यह सिर्फ उद्देश्य का प्रतिनिधित्व करता है या कुछ तर्क व्यवहार के लिए इस ब्लॉक को पॉप्युलेट करने के लिए सर्वर-साइड की आवश्यकता होती है? – Anatoly