Rails 5: 找不到友好 id 的记录

Rails 5: Can't find record with friendly id

我只是将 friendly_id 添加到我的应用程序中,一切正常,除了一行代码给我一个错误。

当我尝试从我的收藏夹视图中订购葡萄酒时出现以下错误。

can't find record with friendly id: "#<Wine::ActiveRecord_AssociationRelation:0x6133278>"


  private
  def set_wine
    @wine = Wine.friendly.find(params[:id])
  end

这是我的葡萄酒视图中的一行:

<div class="col-md-3 right">
 <%= link_to "Bestellen", wine_path(@wines), class: "btn btn-form" %>
</div>

Can't find record with friendly id: Wine::ActiveRecord_AssociationRelation:0x6133278

问题是 @wines 是一个 集合 ,而不是 单个对象 。因此,当您有 wine_path(@wines) 时,collection 作为 id 传递给控制器​​方法,而 friendly_id 需要 single记录。你必须改变

<%= link_to "Bestellen", wine_path(@wines), class: "btn btn-form" %>

<%= link_to "Bestellen", wine_path(favorite.wine), class: "btn btn-form" %>

解决错误。

如果您没有更新数据库中之前的友好 ID,也可能会触发该错误

然后 运行 YouModel.find_each(&:save) 来自 rails 控制台。