Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails 4将嵌套的资源与未嵌套的资源连接起来_Ruby_Ruby On Rails 4_Nested Resources - Fatal编程技术网

Ruby Rails 4将嵌套的资源与未嵌套的资源连接起来

Ruby Rails 4将嵌套的资源与未嵌套的资源连接起来,ruby,ruby-on-rails-4,nested-resources,Ruby,Ruby On Rails 4,Nested Resources,我有一个用户网站(Desive、Rolify、Cancan),有菜谱和菜谱评论 我的路线是这样的: resources :users resources :recipes do resources :comments end 我的模型是: class User < ActiveRecord::Base has_many :recipes has_many :comments class Recipe < ActiveRecord::Base belongs_to :use

我有一个用户网站(Desive、Rolify、Cancan),有菜谱和菜谱评论

我的路线是这样的:

resources :users

resources :recipes do
   resources :comments
end
我的模型是:

class User < ActiveRecord::Base
has_many :recipes
has_many :comments

class Recipe < ActiveRecord::Base
belongs_to :user
has_many :comments

class Comment < ActiveRecord::Base
belongs_to :recipes
belongs_to :user
class用户
我正在呈现的意见和意见表上的食谱显示行动。问题是在呈现之前,在_comment.html.erb partial上,当我写下:

<%= comment.user.name %>

我得到了nil:NilClass错误的未定义方法'name'

无论如何,我可以展示

<% comment.user_id %>

如何检索用户名

我试过:

<%= User.find(comment.user_id).name %>
<%= @comment.user.name %>
<%= comment.user_id.find(:name) %>
<%= comment.user_id.get(:name) %>
<%= comment.user_id(:name) %>

有人知道路由的完整教程吗?我可以找到所有的理论,但对于一个乞丐来说,解释上有很多漏洞。我一直跟进到最后,但没有解释嵌套资源与未嵌套资源的关系,也没有解释编辑和删除注释


谢谢。

获取nil:NilClass错误的
未定义的方法名称时出错。
表示您正在NilClass上设置方法
名称。正如在NilClass中一样,它是Ruby中的一个实际类。然而,这是错误的。您希望在类
User
右侧设置方法名称。因此,正确设置关联后,您应该能够执行以下操作。try的目的是允许您在对象上调用方法,而不使用nil,这意味着如果对象为空,它将不会抛出错误,而是返回nil

现在我知道问题出在哪里了。当我第一次创建Comments模型时,当然是在Recipe模型之后,我使用了rails-scaffolld,它为我生成了一个完整的控制器,使用新的和edit方法,每个方法都有自己的动作视图。我以前这样做是为了关联routes.rb中的资源。所以,我的关系一团糟。所以,在关联模型时,脚手架是个坏主意

正确的方法是,使用或不使用脚手架生成第一个资源。然后忘记脚手架,创建第二个模型,下一步:关联资源,然后创建第二个模型控制器。这样,连接从一开始就很牢固,在“recipes/show”中,呈现评论和用户列将尽可能简单


无论如何谢谢你,大卫。我建议进行教学。

我的用户类确实有一个:名称。而且它工作得很好。谢谢我可以回答问题的第二部分吗?你会如何使用我刚刚试过的try选项,当用户没有头像时,它会创建nill类。有更好的方法吗?你知道routes上的完整示例应用程序吗?再次感谢。再次感谢,你在一分钟内解决了我花了几个小时……我想你正在做的是<代码> <代码>检查什么空白,如果对象是空的,也可以通过只包含空白来对非空的字符串进行评估。也许我在另一个地方做了什么错误,因为NILL有没有空白?这和我在comment.user.name上遇到的问题是一样的,它们只是没有真正的联系。最奇怪的是,它在早上工作。comment.user.name和comment.user.avatar都在工作。但后来我改变了控制器的评论,问题开始了。