在FavoritesController#index中的ActiveRecord :: RecordNotFound找不到带有' id' = 1

时间:2016-06-09 21:51:35

标签: ruby-on-rails activerecord

我对RoR很新。我在尝试运行此命令时遇到错误。有关原因的任何想法?

  

在FavoritesController #index中的ActiveRecord :: RecordNotFound   无法找到Dishing with' id' = 1

提取的来源(第24行):

<td><%= Dish.find(favorite.dishing_id).dish_name %></td>
<% d = Dishing.find(favorite.dishing_id) %>
<td><%= Restaurant.find(d.restaurant_id).name %></td>
<td><%= User.find(favorite.user_id).email %></td>'

这行代码发生错误:

<% d = Dishing.find(favorite.dishing_id) %>

这是我的 favorites_controller.rb

class FavoritesController < ApplicationController
def index
@favorites = Favorite.all
end

def show
@favorite = Favorite.find(params[:id])
end

def new
@favorite = Favorite.new
end

def create
@favorite = Favorite.new
@favorite.dish_comment = params[:dish_comment]
@favorite.user_id = curent_user.id
d = params[:dish_id]
r = params[:restaurant_id]
# find_by

if @favorite.save
  redirect_to "/favorites", :notice => "Favorite created successfully."
else
  render 'new'
end
end

def edit
@favorite = Favorite.find(params[:id])
end

def update
@favorite = Favorite.find(params[:id])

@favorite.dish_comment = params[:dish_comment]
@favorite.dishing_id = params[:dishing_id]
@favorite.user_id = params[:user_id]

if @favorite.save
  redirect_to "/favorites", :notice => "Favorite updated successfully."
else
  render 'edit'
end
end

def destroy
@favorite = Favorite.find(params[:id])

@favorite.destroy

redirect_to "/favorites", :notice => "Favorite deleted."
end
end

2 个答案:

答案 0 :(得分:0)

我没有解决问题的根源,但最终通过在Dishing表中添加一个新的id:1条目来消除错误。我已经添加了:dependent =&gt; :摧毁到Dishing模型,所以希望这不会再次发生。谢谢你的帮助!

答案 1 :(得分:0)

您似乎假设在两个不同的表中有两个具有相同ID的记录。

这通常不安全。您应该修复程序的体系结构,而不是将记录添加到具有匹配ID的菜单中。

DishDishing不必共享相同的ID。将dish_iddishing_id添加到收藏夹。