Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 on rails Rails链接到用户配置文件路径不';找不到用户id_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails链接到用户配置文件路径不';找不到用户id

Ruby on rails Rails链接到用户配置文件路径不';找不到用户id,ruby-on-rails,Ruby On Rails,我有一个用户和配置文件模型,还有两个控制器。我可以转到一个显示所有配置文件的页面,但如果我想查看一个配置文件,这将不起作用。下面是profiles-index.html.erb中的一行: <%= link_to 'Go to profile', user_profile_path(@user, profile) %> 我总是犯不同的错误。我再也没有主意了。请帮忙 如果配置文件仅显示属于用户的属性,则不应为配置文件创建模型 如果您的用户具有将在纵断面图中显示的所有属性,例如名字,姓氏

我有一个用户和配置文件模型,还有两个控制器。我可以转到一个显示所有配置文件的页面,但如果我想查看一个配置文件,这将不起作用。下面是profiles-
index.html.erb
中的一行:

<%= link_to 'Go to profile', user_profile_path(@user, profile) %>

我总是犯不同的错误。我再也没有主意了。请帮忙

如果配置文件仅显示属于
用户的属性,则不应为
配置文件创建模型

如果您的用户具有将在纵断面图中显示的所有属性,例如
名字
姓氏
电子邮件
,等等,这将是有意义的

然后,您可以拥有一个概要文件控制器,并为用户概要文件创建一个视图,在该视图中,您可以从用户对象获取信息并显示它


如果您想显示所有配置文件,那么您将显示所有用户的视图,其属性将显示在另一个视图中。不需要第二个模型。

如果在您的配置文件模型中有一个关系
属于:user
,那么您可以尝试在
配置文件控制器的
show
方法中设置@user。rb
它看起来像:

@user = current_user
这里我们假设用户去查看他/她的个人资料。这将是避免弄乱个人数据的最佳实践

如果我们谈论从列表中访问随机配置文件,那么你就有一个链接,它位于每一个在索引页上列出的配置文件中,它应该默认选择Primel.ID。在这种情况下:

@profile = Profile.find(params[:id])
@user = User.find(@profile.user_id)#This part will depend on how you relate profile and user.
它也可以是
@user=user.find(@profile.user.id)


正如ricks提到的,作为用户模型的一部分,配置文件结构确实会更有效。

因为我的路线有点复杂,配置文件索引实际上显示了所有配置文件,但当前用户仍然登录,正确的路径是

<td><%= link_to 'Show user profile', user_profile_path(current_user, profile) %></td>


这样,作为当前用户的我可以查看其他配置文件。不幸的是,我的应用程序中已经有了配置文件模型和所有依赖项。删除它会让我再工作一周,因为我是一个初学者,要让事情顺利进行并不总是那么容易。也许有一种方法可以获取用户的个人资料,而不必从一开始就做任何事情?reference@iseitz-answer。我建议不要像那样分开做,最好是以正确的方式学习,即使需要更长的时间。您所需要做的就是运行迁移,删除profiles表,并向用户添加属于profiles的列。从长远来看,它的工作较少。不幸的是,这也不起作用,我认为问题在于评论控制器,我试图添加太多,以及我在两者中定义的连接。因此,摆脱评论,使路线完美运行。谢谢你的帮助!我很抱歉这没用,我很高兴你明白了!干得好
<td><%= link_to 'Show user profile', user_profile_path(current_user, profile) %></td>