2012-03-10 25 views
8

हाय मैं एक noob सवाल है, मैं निम्नलिखित एचटीएमएल परिणाम बनाना चाहते हैं:नेस्टेड कंटेंट_टैग के साथ 3 link_to रेल को बनाया है <n hrefed span के साथ href - कैसे करें?

<a href="/controller/action" class="button-big layer">TEXT<span class="arrow-big"></span></a> 

ऊपर एचटीएमएल मैं एक काल स्तरीय शैली के लिए एक छवि में सीएसएस के माध्यम से के साथ पाठ के लिए चाहते हैं।

<%= link_to "TEXT", controller_path, :class => "button-big layer" %> 

परिणामों में: में

<a href="/controller/action" class="button-big layer">TEXT</a> 

और

<%= link_to(content_tag(:span, "", :class => "arrow-big"), controller_path, :class => "button-big layer") %> 

परिणाम:

जब मैं निम्नलिखित कार्यान्वयन की कोशिश परिणाम की जरूरत कार्यान्वयन का सिर्फ एक हिस्सा दर्शाता

<a href="/controller/action" class="button-big layer"><span class="arrow-big"></span></a> 

क्या कोई जानता है कि कैसे पूरा किया जाए?

उत्तर

10

बस 'काल' के साथ अपने पाठ को श्रेणीबद्ध:

<%= link_to(("TEXT" + content_tag(:span, "", :class => "arrow-big")).html_safe, 
      controller_path, 
      :class => "button-big layer") %> 

आप संयोजन के आसपास .html_safe की आवश्यकता होगी के बाद से + ऑपरेटर अन्यथा content_tag के एचटीएमएल बच जाएंगे।

+0

हाय, हाँ अच्छी तरह से किया गया, यह वही था जो मैं खोज रहा हूं। सीएसएस में किसी भी बदलाव के बिना अपेक्षित काम करता है, आपके समाधान के लिए धन्यवाद :-) – user1260945

+0

यह बहुत अच्छा काम करता है, मैंने अपनी जरूरतों के लिए टेक्स्ट और content_tag को उलट दिया, लेकिन यह वही था जो मैं ढूंढ रहा था। –

28

आप सकता है LINK_TO सहायक

<%= link_to controller_path, :class=> "button-big layer" do %> 
    Text 
    <%= content_tag(:span, "", :class => "arrow_big" %> 
<% end %> 
+0

हाय, आपके समाधान के लिए धन्यवाद, काम करता है साथ ही साथ एक अन्य "एक अंतर" के साथ काम करता है। "छवि" के लिए सीएसएस शैली जो स्पैन-टैग द्वारा डाली जाती है उसे समायोजित किया जाना चाहिए क्योंकि ब्रेक डाला जाता है। लेकिन यह कोई बड़ी बात नहीं है, अच्छी तरह से किया! – user1260945

+0

यह आश्चर्यजनक है कि कोई भी 'link_to' और 'content_tag' के ब्लॉक विकल्प के बारे में बात नहीं करता है। ऐसा लगता है कि किसी को भी घोंसला की जरूरत नहीं है, या कोई भी हैमल का उपयोग नहीं करता है, जहां घोंसले की सामग्री बहुत बोझिल होती है। महान जवाब, यह जानने के लिए अच्छा है 'link_to' के साथ, साथ ही 'content_tag' – ahnbizcad

+0

योंक्स के लिए यह खोज रहा है।दस्तावेज से समझा नहीं गया था कि link_to ब्लॉक विकल्प चला सकता है – Jerome

2

के लिए वैकल्पिक वाक्य रचना का उपयोग करके भी घोंसला टैग यहाँ एक और तरीका आप content_tag बिना इस्तेमाल कर सकते हैं है। साफ नहीं है लेकिन यह काम करता है!

<%= link_to '<span class="arrow_big"></span>'.html_safe, controller_path, class: "button-big layer" %> 
1

अपना प्रश्न पढ़ना मैंने अपनी समस्या का समाधान किया। मैं आपके प्रश्न का उत्तर देने का एक और तरीका प्रस्तावित करता हूं।

आप इस तरह के लिंक को बनाने के लिए एक सहायक विधि बना सकते हैं। यह इस

def link_with_text_and_span(href, text, span_options= {}, link_options = {}) 
    span_tag = content_tag(:span, span_options[:content] || '', :class => span_options[:class] || '') 
    link_to(span_tag, href, :class => link_options[:class] || '') 
    end 

इसके बारे में अच्छा की तरह कुछ हो सकता है कि आपके विचार क्लीनर हो जाएगा। तो फिर तुम सिर्फ इस सहायक विधि अपने ध्यान में रखते हुए

<%= link_with_text_and_span("/controller/action", "TEXT", {class: 'arrow-big'}, class: button-big) %> 

पुनश्च कॉल कर सकते हैं: इस कोड पक्का सुधार किया जा सकता, अन्य उपयोगकर्ताओं के लिए, कृपया यह करना चाहते हैं।