我是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语法吗? 谢谢你的帮助
答案 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