link_toをhtml ruby​​コードにラップするにはどうすればよいですか?


116

ビューコードの周りにリンクをラップするにはどうすればよいですか?rubyコードを使用して複数の行を単一の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>

回答:


269

link_to タグの本体として使用するコードのブロック(> = Rails 2.2)を取ります

そうしたらいい

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

しかしdivaタグ内にをネストすることは有効なHTMLではないと確信しています。

編集:=以下のアミンアリアナのコメントごとに文字を追加しました。


17
このコメントは参照です:<a> <div> </ div> </a>はHTML5では有効ですが、以前のHTML仕様では無効です。同様の質問については、stackoverflow.com / questions / 796087 / make- a -div-into- a -linkをご覧ください。
チャックネルソン、2011

Rails 2.3.8では、上記の構文を使用しても「構文エラー、予期しない ')'が引き続き発生します。
daedelus_j 2013年

より複雑なパスがある場合は、パラメーターを追加するだけで、最初のコンテンツを省略できます。たとえば、<%= 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 %>

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はrawXSSになりやすいため、これは使用しないでください。
Aurril、2011

必ずしもそうとは限りませんが、安全であることがわかっている独自のアプリ内のどこかからHTMLが生成されている場合もあります。それでも、99%の状況ではこれを回避するのが最善です。(上記のコードは間違いなく間違いです。先頭は<%=でなく、で始まる必要があり<%ます。)
GMA

最善の方法ではありません。ここでのhtmlは、独自のアプリによって生成され、安全であることを保証する必要があります。上記の回答には他のより良い方法があります。
ジョシュアダンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.