thẻ link_to image. cách thêm lớp vào thẻ


90

Tôi đang sử dụng thẻ link_to img như sau

<%= link_to image_tag("Search.png", :border=>0, :class => 'dock-item'), 
:action => 'search', :controller => 'pages'%><span>Search</span></a>

Dẫn đến html sau

<a href="/pages/search"><img alt="Search" border="0" class="dock-item" 
src="/images/Search.png?1264132800" /></a><span>Search</span></a> 

Tôi muốn class = "dock-item" chuyển đến <a>thẻ thay vì thẻ img.

Làm thế nào tôi có thể thay đổi điều này?

Cập nhật:

<%= link_to image_tag("Search.png", :border=>0), :action => 'search', 
:controller => 'pages', :class => 'dock-item' %>

kết quả trong

<a href="/pages/search?class=dock-item"><img alt="Search" border="0" 
src="/images/Search.png?1264132800" /></a> 

Câu trả lời:


137

xin chào bạn có thể thử làm điều này

link_to image_tag("Search.png", border: 0), {action: 'search', controller: 'pages'}, {class: 'dock-item'}

hoặc thậm chí

link_to image_tag("Search.png", border: 0), {action: 'search', controller: 'pages'}, class: 'dock-item'

lưu ý rằng vị trí của các dấu ngoặc nhọn là rất quan trọng, vì nếu bạn bỏ sót chúng, các đường ray sẽ cho rằng chúng tạo thành một tham số băm duy nhất (đọc thêm về điều này tại đây )

và theo api cho link_to :

link_to(name, options = {}, html_options = nil)
  1. tham số đầu tiên là chuỗi được hiển thị (hoặc nó cũng có thể là image_tag)
  2. thứ hai là tham số cho url của liên kết
  3. mục cuối cùng là tham số tùy chọn để khai báo thẻ html, ví dụ: class, onchange, v.v.

hy vọng nó giúp! =)


Cảm ơn các câu trả lời chi tiết. Tôi sẽ chấp nhận câu trả lời của bạn, nhưng cho tôi biết nếu bạn biết làm thế nào để đạt được điều này với thẻ link_to cũng .. <a href="https://stackoverflow.com/pages/search" class="dock-item"><img alt="Search" border="0" src="/images/Search.png?1264132800" /><span>Search</span></a>Tôi đã thêm một thẻ div trước khi đóng <a>thẻ
mặt ở khắp nơi

nó thực sự là cùng một khái niệm, vì vậy bạn cần phải tìm cách đưa cả thẻ image_tag và span vào tham số "name". bạn có thể thử cái này, không phải mã đầy đủ nhưng tôi nghĩ bạn có thể tự làm được =) = link_to "# {image_tag} <span> Tìm kiếm </span>", ... bạn có thấy tôi đang cố gắng làm gì không?
Staelen

à hiểu rồi. vâng, tôi muốn ép nó vào tham số tên. nhưng không biết về # {}. thời gian vui vẻ với đường ray
Toàn bộ

Điều này có thể hữu ích cho người khác: Nếu bạn chỉ muốn thêm một hình ảnh bên cạnh văn bản của liên kết bạn chỉ cần làm <% = link_to IMAGE_TAG ( 'IMAGE_PATH') + "liên kết văn bản", the_path%>
Nick Res

27

Chỉ cần thêm vào là bạn có thể chuyển link_tophương thức một khối:

<%= link_to href: 'http://www.example.com/' do %>
    <%= image_tag 'happyface.png', width: 136, height: 67, alt: 'a face that is unnervingly happy'%>
<% end %>

kết quả trong:

<a href="/?href=http%3A%2F%2Fhttp://www.example.com/k%2F">
    <img alt="a face that is unnervingly happy" height="67" src="/assets/happyface.png" width="136">
</a>

Đây là một cứu cánh khi nhà thiết kế đã cho tôi các liên kết phức tạp với các hiệu ứng cuộn qua css3 lạ mắt.


Tôi không cần những thứ bổ sung có trước liên kết. Nếu bạn loại bỏ href, bạn chỉ có thể được chuyển hướng đến url.
Jngai1297

Đây là câu trả lời tốt nhất cho tôi. Cảm ơn!
newUserNameHere

@newUserNameHere Đừng lo lắng! :)
Starkers

17

Tốt nhất sẽ là:

link_to image_tag("Search.png", :border => 0, :alt => '', :title => ''), pages_search_path, :class => 'dock-item'

Đây là giải pháp sạch nhất.
Raidspec

Giải pháp tốt nhất, sạch sẽ và không có bất kỳ vòng lặp không cần thiết nào.
Lucas Andrade

9

đây là giải pháp của tôi:

<%= link_to root_path do %>
   <%= image_tag "image.jpg", class: "some class here" %>
<% end %>

6

Dễ dàng:

<%= link_to image_tag("Search.png", :border=>0), :action => 'search', :controller => 'pages', :class => 'dock-item' %>

Tham số đầu tiên của link_to là văn bản / html để liên kết (bên trong thẻ a ). Tập hợp thông số tiếp theo là các thuộc tính url và các thuộc tính liên kết.


Tôi đã thử điều đó nhưng thêm nó vào đó làm cho nó trở thành một tham số cho chuỗi. vui lòng xem cập nhật của tôi
Toàn bộ

Vâng, tôi thậm chí đã viết rằng param thứ hai là url, nhưng sau đó đã xóa nó không có lý do: P
Toby Hede

2

Để trả lời câu hỏi cập nhật của bạn, theo http: //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html ...

Hãy cẩn thận khi sử dụng kiểu đối số cũ hơn, vì cần thêm một hàm băm theo nghĩa đen:

  link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
  # => <a href="https://stackoverflow.com/articles" class="article" id="news">Articles</a>

Để lại hàm băm sẽ tạo ra liên kết sai:

  link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
  # => <a href="https://stackoverflow.com/articles/index/news?class=article">WRONG!</a>

2

Toàn bộ :action =>, :controller => thứ mà tôi đã thấy xung quanh không hiệu quả với tôi.

Đã dành hàng giờ để đào và phương pháp này chắc chắn hiệu quả với tôi.

<%=link_to( image_tag(participant.user.profile_pic.url(:small)), user_path(participant.user), :class=>"work") %>

Ruby on Rails sử dụng link_to với image_tag

Ngoài ra, tôi đang sử dụng Rails 4.


1

Tôi cũng đã thử điều này và hoạt động rất tốt:

      <%= link_to home_index_path do %>
      <div class='logo-container'>
        <div class='logo'>
          <%= image_tag('bar.ico') %>
        </div>
        <div class='brand' style='font-size: large;'>
          .BAR
        </div>
      </div>
      <% end %>

0

Này các bạn, đây là một cách tốt để liên kết w / image và có rất nhiều đạo cụ trong trường hợp bạn muốn đặt thuộc tính css, ví dụ như thay thế "alt" hoặc "title", v.v ..... cũng bao gồm một hạn chế logic (?)

<%= link_to image_tag("#{request.ssl? ? @image_domain_secure : @image_domain}/images/linkImage.png", {:alt=>"Alt title", :title=>"Link title"}) , "http://www.site.com"%>

Hi vọng điêu nay co ich!


0
<%= link_to root_path do %><%= image_tag("Search.png",:alt=>'Vivek',:title=>'Vivek',:class=>'dock-item')%><%= content_tag(:span, "Search").html_safe%><% end %>

Bạn sẽ giải thích một số chi tiết về câu trả lời của chúng tôi?
Nilesh

Các ans của tôi sẽ hiển thị đầu ra như sau: <a href="https://stackoverflow.com/pages/search"> <img alt = "Tìm kiếm" border = "0" class = "dock-item" src = "/ images / Search.png? 1264132800" /> </a> <span> Tìm kiếm </span> </a>
Vivek Kapoor

0

Bạn cũng có thể thử cái này

<li><%= link_to "", application_welcome_path, class: "navbar-brand metas-logo"    %></li>

Trong đó "metas-logo" là một lớp css có hình nền

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.