【问题标题】:.each loop inside a link_to loop.each 循环内的 link_to 循环
【发布时间】:2015-12-16 10:03:17
【问题描述】:

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

专辑/索引

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

相册控制器

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 路线

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     

每个迭代都是可点击的,但没有得到 /albums/:id。问题出在哪里?它是 link_to 语法吗? 感谢您的帮助

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    应该是(交换前两行):

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

    为每个相册创建链接,而不是“为每个相册创建链接”。它不是那样工作的。由于您是编程新手,不用担心您会习惯它。

    【讨论】:

    • 应该是link_to album,因为link_to (album)中的()是多余的。它仍然有效。但是,我根据这个编辑了我的答案。谢谢。
    • 您是否需要从@album 中删除@ 以便它使用块参数中的专辑?
    【解决方案2】:

    &lt;% @albums.each do |album| %&gt; 如何工作? @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

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多