【问题标题】:Ruby on rails 5 problem "collection" undefined method `to_a' Did you mean? to_sRuby on rails 5 问题“收集”未定义方法`to_a' 你的意思是? to_s
【发布时间】:2020-10-29 16:53:13
【问题描述】:

我无法将此对象传递给部分,我无法弄清楚问题是否是该项目最初是在 Rails

#EmptySearch:0x00007fd53c037d70 的未定义方法 `to_a' 你有吗 意思是? to_s

查看:

<div class="col-12 col-lg-8 search-results-container">

  <%#= render partial: 'search_bar' %>
  
  <div class="container-fluid search-results">

    <div class="row py-5" id="search-results">

      <%= render partial: "components/v2/eatery_card", collection: @page.eateries %>

    </div>

  </div>

</div>

我在这一行遇到了问题:

 <%= render partial: "components/v2/eatery_card", collection: @page.eateries %>

这是控制器:

  def show
    redirect_to controller: 'cities', action: 'show', location: searchkick_params[:location] if searchkick_params[:location]
    @page = SearchPage.new(current_user, request, searchkick_params)
    @sarray=@page.eateries

    js search_results: @page.eateries, map_center: @page.map_center, ajax_results_url: api_v1_search_map_results_path, search_allergens: @page.allergen_ids, search_food_typologies: @page.food_typology_ids
  end

渲染部分:

<div class="col-12 col-md-6">
  <div id="eatery-card" class="eatery_result_<%= eatery_card.id %>">
    <% if signed_in? && current_user.favorite_eateries.ids.include?(eatery_card.id) %>
      <div class="eatery-favorite active eatery_toggle_favorite" data-id="<%= eatery_card.id %>"></div>
    <% else %>
      <div class="eatery-favorite eatery_toggle_favorite" data-id="<%= eatery_card.id %>"></div>
    <% end %>

    <% if @page %>
      <%= link_to '', eatery_path(eatery_card.id, allergens: @page.allergen_ids , food_typologies: @page.food_typology_ids, searched: true), class:'eatery-link' %>
    <% else %>
      <%= link_to '', eatery_path(eatery_card.id), class:'eatery-link' %>
    <% end %>

    <div class="eatery-image" style="background-image: url(<%= eatery_card.image.url(:medium)%>);"></div>

    <h5 class="eatery-name p-0 pt-3 mb-2">
      <%= eatery_card.name %>
      <span class="eatery-category text-success ml-1">
        <%= eatery_card.category.name %>
      </span>
    </h5>
    <h6 class="eatery-address p-0 m-0 mb-2 small"><%= eatery_card.complete_address %></h6>

    <div class="eatery-rating">
      <div class="er-stars mr-1 pull-left">
        <%= rate_to_stars(eatery_card.reviews_score) %>
      </div>
      <span class="er-reviews-count text-muted small"><%= eatery_card.reviews.approved.count %> recensioni</span>
    </div>
  </div>
</div>

EmptySearch 类:

class EmptySearch
  def total_count
    0
  end

  def took
    0
  end
end

【问题讨论】:

  • 你的部分是什么?如果您使用item 作为本地尝试&lt;%= render partial: "components/v2/eatery_card", collection: @page.eateries, as: :item %&gt;
  • EmptySearch 类是什么,它从何而来?你确定@page.eateries 可以被多次调用吗?
  • 感谢回答我刚刚贴出部分内容

标签: ruby ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

我猜你从@page.eateries 获得了一个EmptySearch 实例,然后你将EmptySearch 传递给一些预期的Enumerable-ish(例如数组、ActiveRecord 查询、.. .),然后调用to_a 来获取一个可以迭代的数组。

快速解决方法是将to_a 添加到EmptySearch

class EmptySearch
  #...
  def to_a
    []
  end
end

更好的解决方案是使EmptySearch 可枚举。一个可能更好的解决方案是完全摆脱 EmptySearch 并让 @page.eateries 为您提供某种不匹配的查询。

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2017-12-08
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多