user2323
user2323

Reputation: 49

adding link_to with image_tag and image path both

I am trying to replace the tag with link_to in my rails application view. for replacing I have svg icon, text and link all in one tag. Here is below

 <a class="navbar-brand" href="index.html"><%= image_tag 'logo.svg', "data-svg-fallback" => image_path('logo.svg'), :align=> "left" ,:style => "padding-right: 5px;" %>
    My Project </a>

but I failed to convert the above link to rails link_to

Any suggestion would be great This is what I am trying but it is not working

  1.  <%= link_to '#' do %>
  My Project<%= image_tag ('logo.svg', "data-svg-fallback" => image_path('logo.svg'), :align=> "left" ,:style => "padding-right: 5px;") %>
  <% end %>
2.   <%= link_to "My Project", home_index_path, :class=> "navbar-brand" do %>
  <%= image_tag('logo.svg'), "data-svg-fallback" => image_path('logo.svg'), :align=> "left" ,:style => "padding-right: 5px"; %>
  <% end %>

Upvotes: 2

Views: 3362

Answers (3)

Ugo Mare
Ugo Mare

Reputation: 452

Remove the space after image_tag.

<%= link_to '#' do %>
  My Project <%= image_tag('logo.svg', "data-svg-fallback" => image_path('logo.svg'), :align=> "left" ,:style => "padding-right: 5px;") %>
<% end %>

Upvotes: 2

Pardeep Dhingra
Pardeep Dhingra

Reputation: 3946

Instead of image_path you have to use asseth_path.

Try this:

<%= link_to '#' do %>
  My Project <%= image_tag('logo.svg', "data-svg-fallback" => asset_path('logo.svg'), :align=> "left" ,:style => "padding-right: 5px;") %>
<% end %>

Upvotes: 0

Joseph N.
Joseph N.

Reputation: 2457

You need to use asset_path do set the path of your svg inside the data attribute like so

<%= link_to "index.html", class: "navbar-brand" do %>
       <%= image_tag "logo.svg", data: { svg_fallback => asset_path("logo.svg") }, align: "left", style: "padding-right: 5px;" %> My Project
<% end %>

Upvotes: 0

Related Questions