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.