Link_to’yu bazı html ruby ​​kodlarının etrafına nasıl sarabilirim?


116

Bir bağlantıyı görünüm kodunun etrafına nasıl sararım? Ruby koduyla birden çok satırı tek bir link_toyönteme nasıl geçireceğimi çözemiyorum . Aradığım sonuç, sütunu tıklayıp gösteri sayfasını almanızdır:

<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>

Yanıtlar:


271

link_to etiketin gövdesi olarak kullanacağı bir kod bloğunu (> = Rails 2.2) alır.

Yani yaparsın

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

Ancak , divbir aetiketin içine yerleştirmenin geçerli HTML olmadığından oldukça eminim .

DÜZENLEME: =Amin Ariana'nın aşağıdaki yorumuna karakter eklendi .


17
Bu yorum yalnızca bir referanstır: <a> <div> </div> </a> HTML5'te geçerlidir, ancak önceki HTML özelliklerinde geçerli değildir. Benzer bir soru için stackoverflow.com/questions/796087/make-a-div-into-a-link sayfasına bakın .
— chucknelson

Rails 2.3.8, yukarıdaki sözdizimi kullanılarak hala "sözdizimi hatası, beklenmeyen") "mesajı alıyor.
— daedelus_j

Daha karmaşık bir yolunuz varsa, ilk içeriği eksik olan parametreleri ekleyebilirsiniz, örneğin <% = link_to bir_path, method:: post%>
— Obromios

13

Ayrıca bu, bazıları için bir sorun olabilir:

<%=Bunun yerine içinde kod bulunan basit bir bağlantı yapıyorsanız , yazdığınızdan emin olun <%.

Örneğin

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

Bunun gerekli olduğunu düşünüyorum Rails 3+
— m33lky

8

Daha eski Rails sürümleri için şunları kullanabilirsiniz:

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

6

link_toBir blok ile kullanabilirsiniz :

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

3
link_to, '=' öğesinin görünmesini gerektirir (bir blokla bile)
— Brandon

-2

Bu cevabın biraz geciktiğini biliyorum - ama bugün buraya yönlendirildim ve iyi bir cevap bulamadım. Aşağıdakiler çalışmalıdır:

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

5
Bu, içine girilen tüm rawhtml'ler XSS'ye yatkın olduğundan kullanılmamalıdır.
— Aurril

Mutlaka değil, HTML, kendi uygulamanızın içinde güvenli olduğunu bildiğiniz bir yerden oluşturuluyor olabilir. Yine de, durumların% 99'unda bundan kaçınmak en iyisidir. (Yine de yukarıdaki kodun bir hatası olduğunu belirtmiyorum bile,<%= , değil <%.)
— GMA

En iyi yol değil. html burada kendi uygulamanız tarafından oluşturulmalı ve güvenli olması sağlanmalıdır. Yukarıdaki yanıtların başka daha iyi yolları da var.
— Joshua Dance
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.