Ruby on rails 控制器中的显示功能未找到对象的创建者
我有一个rails应用程序的一部分,用户将创建一个食谱,并保存在他们的“食谱”中。其他用户将能够从其他用户那里获取食谱。因此,应用程序中会有一个方面显示是谁创建了配方 配方的模式Ruby on rails 控制器中的显示功能未找到对象的创建者,ruby-on-rails,ruby,activerecord,rails-activerecord,Ruby On Rails,Ruby,Activerecord,Rails Activerecord,我有一个rails应用程序的一部分,用户将创建一个食谱,并保存在他们的“食谱”中。其他用户将能够从其他用户那里获取食谱。因此,应用程序中会有一个方面显示是谁创建了配方 配方的模式 create_table "recipes", force: :cascade do |t| t.string "recipe_name" t.string "description" t.integer "calories" t.integer "carbs" t.integer "fats" t.int
create_table "recipes", force: :cascade do |t|
t.string "recipe_name"
t.string "description"
t.integer "calories"
t.integer "carbs"
t.integer "fats"
t.integer "protein"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我遇到的问题是显示配方的创建者
def show
@user = current_user
@recipe = Recipe.find_by(params[:id])
creator = User.find_by(params[@recipe.user_id])
@creator = creator.first_name
end
所以现在我有两个用户的John(Id:1)和Alex(Id:2)。当我让Alex制作一个菜谱,并在@recipe下放置一个窥探器时,当我调用@recipe.user\u id时,我会得到一个2的用户id
然而,当我把撬杆放在creator下面并调用creator时,我得到了用户id 1,我得到了John。我相信我在@recipe中使用user_id查找用户的方法有问题。我想知道是否有人知道我做错了什么,或者我是否需要补充更多信息。谢谢 这是:
User.find_by(params[@recipe.user_id])
@recipe = Recipe.find_by(params[:id])
由于以下几个原因没有意义:
需要类似散列的结构。类似于:find_by
User.find\u by(id:xxx)
没有意义,因为这将类似于:params[@recipe.user_id]
,这不是您想要的李>params[1]
@recipe = Recipe.find_by(params[:id])
还存在格式错误的find_by
因此,尝试以下方法:
def show
@user = current_user
@recipe = Recipe.find(params[:id])
creator = @recipe.user
@creator = creator.first_name
end
当然,这是假设您已正确设置了
收据
和用户
之间的关联(即,使用属于
)。参数[@recipe.User\u id]
,这似乎很可疑;此外,您还可以在配方
模型中创建一个归属于:user
,然后只需@creator=@Recipe.user.first\u name
即可。谢谢