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 태그 본문으로 사용할 코드 블록 (> = 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은 여전히 ​​위의 구문을 사용하여 "syntax error, expected ')'"를 받고 있습니다.
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 2012

8

이전 Rails 버전의 경우 다음을 사용할 수 있습니다.

<% 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가 표시하려면 '='이 필요합니다 (블록이 있어도)
Brandon

-2

내가 아는이 답장에 약간의 지연이 있지만 오늘 여기로 안내되었고 좋은 답을 찾지 못했습니다. 다음이 작동합니다.

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

5
내부에 입력 된 모든 html raw이 XSS에 취약하기 때문에 사용해서는 안됩니다 .
Aurril

반드시 그런 것은 아니지만, 안전하다고 알고있는 앱 내에서 HTML이 생성되는 경우 일 수 있습니다. 그래도 99 %의 상황에서는이를 피하는 것이 가장 좋습니다. (이것은 시작해야, 위의 코드는 어쨌든 실수를 가지고 말할 것도없고 <%=,하지 <%.)
GMA

최선의 방법은 아닙니다. 여기에서 html은 자신의 앱에서 생성해야하며 안전해야합니다. 위의 답변에는 다른 더 좋은 방법이 있습니다.
Joshua Dance
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.