2009-07-06 4 views
103

보기 코드 주위에 링크를 어떻게 포장합니까? 하나의 link_to 메서드에 여러 줄을 루비 코드로 전달하는 방법을 알 수 없습니다.일부 html 루비 코드에서 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> 

답변

242

link_totakes a block of code을하는 그것을 태그의 본문으로 사용됩니다.

그래서, 당신은

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

그러나 내가 둥지에 a 태그 내부에 div이 유효 HTML 아니라고 확신 해요 않습니다.

EDIT : 아래에 Amin Ariana의 의견에 따라 =자를 추가했습니다.

+14

이 댓글은 단지 참조 용일뿐입니다 :

은 HTML5에는 유효하지만 이전 HTML 사양에는 유효하지 않습니다. 유사한 질문은 http://stackoverflow.com/questions/796087/make-a-div-into-a-link를 참조하십시오. – chucknelson

+0

위의 구문을 사용하여 Rails 2.3.8에서 여전히 "구문 오류, 예상치 못한 오류가 발생했습니다.") ''. –

+0

경로가 더 복잡한 경우 매개 변수를 추가하고 초기 콘텐츠가 누락 될 수 있습니다. 예 : <% = link_to some_path, method : : post %> – Obromios

6

당신은 블록으로 link_to를 사용할 수 있습니다 : 내가 찾고 있어요 결과는 당신이 쇼 페이지 열을 클릭하고 얻을 수 있다는 것입니다 (> = 2.2 레일)

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

> = 레일스 2.2 –

+0

아, 알았어! 감사합니다 오마르. –

+2

link_to 표시하려면 '='이 필요합니다 (블록 포함) – Brandon

7

이전 레일 버전의 경우

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

저장된 내 하루 :) 덕분에 .. 매력처럼 작동했습니다. –

0

내가 아는이 응답에 지연의 비트를 사용할 수 있습니다 -하지만 난 오늘을 지시했다, 그리고 좋은 답을 찾지 못했습니다. 다음은 작동합니다 :

당신이 <%의 대신에 코드를 단순 링크 작업을 할 경우 <%=를 작성해야합니다 :

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

XSS에 취약한 'raw'내부에 입력 된 모든 HTML이 사용되어서는 안됩니다. – Aurril

+0

꼭 그렇지는 않습니다. 안전하다고 알고있는 자신의 앱 내의 HTML에서 HTML을 생성하는 경우 일 수 있습니다. 그래도 99 %의 상황에서이를 피하는 것이 가장 좋습니다. (위의 코드는 어쨌든 실수가 아니며'<% '가 아니라'<% ='로 시작해야합니다.) – GMA

+0

가장 좋은 방법은 아닙니다. HTML은 여기에 자신의 응용 프로그램에 의해 생성되어야하고 안전 보장. 위의 답변에는 다른 더 좋은 방법이 있습니다. –

11

또한,이 일부 문제가 될 수 있습니다.

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

이것이 Rails 3 이상에서 필요하다고 생각합니다. – m33lky

관련 문제