在link_to循环中的.each循环

时间:2015-12-16 01:33:45

标签: ruby-on-rails

我是ruby的新手,我正在尝试在link_to循环中执行.each循环,以便使每个单一的itiration(包括专辑封面,标题和艺术家)可以作为一个块进行点击。像这样......

相册/索引

<%= link_to (@album) do %>
  <% @albums.each do |album| %>
    <img src="<%= album.cover %>">
    <%= album.title %>
    <%= album.artist %>
  <% end %>
<% end %>

albums_controller

def show
  @album = Album.find(params[:id])
  @tracks = @album.tracks
end

的routes.rb

Rails.application.routes.draw do
 resources :albums
 root 'albums#index'
end

$ rake routes

Prefix Verb   URI Pattern                Controller#Action
    albums GET    /albums(.:format)          albums#index     
           POST   /albums(.:format)          albums#create    
 new_album GET    /albums/new(.:format)      albums#new       
edit_album GET    /albums/:id/edit(.:format) albums#edit      
     album GET    /albums/:id(.:format)      albums#show      
           PATCH  /albums/:id(.:format)      albums#update    
           PUT    /albums/:id(.:format)      albums#update    
           DELETE /albums/:id(.:format)      albums#destroy   
      root GET    /                          albums#index     

每个itiration都是可点击的,但不能获得/ albums /:id。问题出在哪儿?它是link_to语法吗? 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

它应该是(交换2个第一行):

<% @albums.each do |album| %>
  <%= link_to album do %>
    <img src="<%= album.cover %>">
    <%= album.title %>
    <%= album.artist %>
  <% end %>
<% end %>

对于每张专辑,您可以为其创建链接,而不是&#34;为每张专辑创建链接&#34;。它不会那样工作。由于您不熟悉编程,不用担心您会习惯它。

答案 1 :(得分:0)

<% @albums.each do |album| %>如何运作? @albums未定义(在您的控制器展示操作中,您只定义了@album(单数)和@tracks) 此外,您已发布了show操作的代码,但我认为您正在尝试执行index操作。 如果您的控制器是这样的:

def index
  @albums = Album.all
end

然后,在你看来,你应该写:

<% @albums.each do |album| %>
  <%= link_to album do %>
    <%= image_tag album.cover %>
    <%= album.title %>
    <%= album.artist %>
  <% end %>
<% end %>

看看: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to