【问题标题】:Couldn't find Zone without an ID找不到没有 ID 的区域
【发布时间】:2014-10-16 10:54:58
【问题描述】:

只是尝试使用 link_to image_tag 助手,但我无法让它工作。

谁能告诉我怎么了?

控制器

class PagesController < ApplicationController
  def home
    @categories = Category.all
    @zone = Zone.find(params[:id])
    @zones = Zone.all
    @photos = Photo.landing
  end

end

查看

    <% @zones.limit(8).each do |zone| %>
        <%= link_to image_tag "category-box_#{zone.id}.jpg", zone(zone.id) %>
    <% end %>

更新

我发现 Id 问题来自控制器。现在的错误是:

1:Fixnum 的未定义方法 `symbolize_keys'

谢谢!

【问题讨论】:

  • 试试link_to image_tag("category-box_#{zone.id}.jpg"), zone_path(zone.id)
  • 试试这个&lt;%= link_to image_tag("category-box_#{zone.id}.jpg") , zone_path(zone.id) %&gt; 而不是zone(zone.id)
  • 你好,正确的路径是spots_by_zone_path(zone.id),所以我做了,但我得到“/spots/zonas/1”的未定义方法`symbolize_keys':String
  • @MirkoAkkov 我发现是 image_tag 导致它出错。我怎样才能使用不同的方式来做到这一点?

标签: ruby-on-rails link-to


【解决方案1】:

您需要将您的 image_tag 括在括号中。您的代码应如下所示:

<% @zones.limit(8).each do |zone| %>
    <%= link_to image_tag("category-box_#{zone.id}.jpg"), spots_by_zone_path(zone.id) %>
<% end %>

您可以简单地使用block form of link_to

<% @zones.limit(8).each do |zone| %>
    <%= link_to spots_by_zone_path(zone.id) do %>
      <%= image_tag "category-box_#{zone.id}.jpg" %>
    <% end %>
<% end %>

【讨论】:

  • 完美答案。非常感谢。
  • @Gibson 当你不使用方括号时,rails 将路径助手作为 image_tag 的参数,因此导致错误
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 2012-05-24
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多