Search code examples
ruby-on-rails-4rails-routing

trying to link image to specific model id in rails


I'm having a routing issue with an image. In my app I have images of items on the home page. I would like them to link to their image page.

Here is what my items controller looks like:

class ItemsController < ApplicationController

    def show
        @item = Item.find(params[:id])
  end
end 

This is what I have in my routes:

Rails.application.routes.draw do
resources :items
end 

And this is what I have in the item partial:

<%= link_to(image_tag(item.image.url(:thumb)), item_path(:id)) %>

What I expected after reading the rails routing guide was that this would link to the item page for that image. Here is their example:

photo_path(:id) returns /photos/:id (for instance, photo_path(10) returns /photos/10)

I should also add that this is in my home page controller:

class StaticPagesController < ApplicationController
  def home
  @items = Item.where.not(category_id: 1)
  end

However, that is not working. I've tried several different things, but all produce errors. Is there a simple way to do this?


Solution

  • The normal way to do what you want is this:

    <%= link_to item_path(item) do %>
      <%= image_tag(item.image.url(:thumb)) %>
    <% end %>
    

    You can just pass the instance of the item to item_path and also if you have complicated html for a link, it is usual to put it in a block for the link as shown here (with link_to something do).