ฉันจะห่อ link_to รอบรหัสทับทิม html ได้อย่างไร


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>

คำตอบ:


271

link_to รับบล็อกโค้ด (> = Rails 2.2) ซึ่งจะใช้เป็นเนื้อหาของแท็ก

ดังนั้นคุณทำ

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

แต่ฉันค่อนข้างแน่ใจว่าการซ้อนแท็กdivภายในaแท็กนั้นไม่ใช่ HTML ที่ถูกต้อง

แก้ไข: เพิ่ม=ตัวละครตามความคิดเห็นของ Amin Ariana ด้านล่าง


17
ความคิดเห็นนี้เป็นเพียงข้อมูลอ้างอิง: <a> <div> </div> </a> ใช้ได้ใน HTML5 แต่ไม่ใช่ในข้อกำหนด HTML ก่อนหน้านี้ ดูstackoverflow.com/questions/796087/make-a-div-into-a-linkสำหรับคำถามที่คล้ายกัน
chucknelson

Rails 2.3.8 ยังคงได้รับ "ข้อผิดพลาดทางไวยากรณ์ที่ไม่คาดคิด") "โดยใช้ไวยากรณ์ด้านบน
daedelus_j

หากคุณมีเส้นทางที่ซับซ้อนมากขึ้นคุณสามารถเพิ่มพารามิเตอร์โดยไม่มีเนื้อหาเริ่มต้นเช่น <% = link_to some_path method:: post%>
Obromios

13

นอกจากนี้อาจเป็นปัญหาสำหรับบางคน:

ให้แน่ใจว่าจะเขียนถ้าคุณกำลังทำลิงค์ที่เรียบง่ายที่มีรหัสในนั้นแทน<%=<%

เช่น

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

ฉันคิดว่าสิ่งนี้จำเป็นใน Rails 3+
m33lky

8

สำหรับ Rails เวอร์ชันเก่าคุณสามารถใช้ไฟล์

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


-2

ฉันรู้คำตอบนี้ค่อนข้างล่าช้า - แต่วันนี้ฉันถูกส่งตัวมาที่นี่และไม่พบคำตอบที่ดี สิ่งต่อไปนี้ควรใช้งานได้:

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

5
ไม่ควรใช้เนื่องจาก html ทั้งหมดที่ป้อนภายในrawมีแนวโน้มที่จะ XSS
Aurril

ไม่จำเป็นอาจเป็นกรณีที่ HTML ถูกสร้างขึ้นจากที่ใดที่หนึ่งภายในแอปของคุณเองซึ่งคุณรู้ว่าปลอดภัย อย่างไรก็ตามควรหลีกเลี่ยงสิ่งนี้ใน 99% ของสถานการณ์ (ไม่ต้องพูดถึงรหัสข้างต้นมีข้อผิดพลาดอยู่แล้วควรเริ่มต้นด้วย<%=ไม่ใช่<%)
ย่า

ไม่ใช่วิธีที่ดีที่สุด html ที่นี่จะต้องสร้างขึ้นโดยแอปของคุณเองและมั่นใจได้ว่าปลอดภัย มีวิธีอื่นที่ดีกว่าในคำตอบข้างต้น
Joshua Dance
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.