मैं कुछ html रूबी कोड के आसपास link_to कैसे लपेटूं?


116

मैं दृश्य कोड के चारों ओर एक लिंक कैसे लपेटूं? मैं यह पता नहीं लगा सकता कि रूबी कोड के साथ कई लाइनों को एक ही link_toविधि से कैसे पारित किया जाए । मैं जिस परिणाम की तलाश कर रहा हूं वह यह है कि आप कॉलम पर क्लिक करें और शो पेज प्राप्त करें:

<div class="subcolumns">
  <div class="c25l">
        <div class="subcl">
        <%= image_tag album.photo.media.url(:thumb), :class => "image" rescue nil  %>
        </div>
    </div>
  <div class="c75r">
        <div class="subcr">
            <p><%= album.created_at %></p>
            <%= link_to h(album.title), album %>
            <p><%= album.created_at %></p>
            <p><%= album.photo_count %></p>
        </div>
  </div>
</div>

जवाबों:


270

link_to कोड का एक ब्लॉक लेता है (> = रेल 2.2) जिसे वह टैग के शरीर के रूप में उपयोग करेगा।

तो तुम करते हो

<%= link_to(@album) do %>
  html-code-here
<% end %>

लेकिन मुझे पूरा यकीन है कि divएक aटैग के अंदर घोंसला बनाना वैध HTML नहीं है।

संपादित करें: =नीचे अमीन एरियाना की टिप्पणी के अनुसार जोड़ा गया चरित्र।


17
यह टिप्पणी सिर्फ एक संदर्भ है: HTML5 में <a> <div> </ div> </a> मान्य है, लेकिन पहले के HTML स्पेक्स में नहीं। इसी तरह के प्रश्न के लिए stackoverflow.com/questions/796087/make-a-div-into-a-link देखें ।
चकलेसन

उपरोक्त सिंटैक्स का उपयोग करके रेलिंग 2.3.8 को अभी भी "सिंटैक्स त्रुटि, अप्रत्याशित ') मिल रहा है।
daedelus_j

यदि आपके पास एक अधिक जटिल मार्ग है, तो आप बस पैरामीटर में जोड़ सकते हैं, प्रारंभिक सामग्री को गायब करना, जैसे <% = link_to some_path, विधि: पोस्ट%>
Obromios

13

इसके अलावा, यह कुछ के लिए एक मुद्दा हो सकता है:

<%=यदि आप इसके बजाय कोड के साथ एक सरल लिंक कर रहे हैं तो लिखना सुनिश्चित करें <%

जैसे

<%= link_to 'some_controller_name/some_get_request' do %>
  Hello World
<% end  %>

मुझे लगता है कि रेल में इसकी आवश्यकता है 3+
m33lky

8

पुराने रेल संस्करणों के लिए, आप उपयोग कर सकते हैं

<% content_tag(:a, :href => foo_path) do %>
  <span>Foo</span>
<% end %>

6

आप link_toएक ब्लॉक के साथ उपयोग कर सकते हैं :

<% link_to(@album) do %>
    <!-- insert html etc here -->
<% end %>

3
link_to को दिखाने के लिए '=' की आवश्यकता होती है (यहां तक ​​कि एक ब्लॉक के साथ)
ब्रैंडन

-2

इस उत्तर पर थोड़ा अंतराल मुझे पता है - लेकिन मुझे आज यहां निर्देशित किया गया था, और एक अच्छा जवाब नहीं मिला। निम्नलिखित काम करना चाहिए:

<% link_to raw(html here), @album %>

5
यह प्रयोग नहीं किया जाना चाहिए क्योंकि सभी html के अंदर दर्ज rawXSS के लिए प्रवण है।
आउरिल

जरूरी नहीं है, यह मामला हो सकता है कि HTML आपके अपने ऐप के भीतर कहीं से उत्पन्न हो रहा है जिसे आप सुरक्षित होना जानते हैं। फिर भी, 99% स्थितियों में इससे बचना सबसे अच्छा है। (उपरोक्त कोड का उल्लेख करने की गलती नहीं है, वैसे भी, इसके साथ शुरू होना चाहिए <%=, नहीं <%।)
जीएमए

सबसे अच्छा तरीका नहीं है। यहाँ html को आपके खुद के ऐप द्वारा जनरेट करना होगा और सुरक्षित होना सुनिश्चित करना होगा। उपरोक्त उत्तरों में अन्य बेहतर तरीके हैं।
जोशुआ नृत्य
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.