0

我有一个配置文件脚手架(以及使用 Devise 创建的用户),每个用户都有一个配置文件,并希望显示来自我的 application.html.erb 的单个用户配置文件的链接。

问题是,这段代码在 /views/profiles/index.html.erb 中有效,但在 /layouts/application.html.erb 中无效

<td><%= link_to 'Show', profile %></td>
<td><%= link_to 'Edit', edit_profile_path(profile) %></td>

我错过了什么?

4

1 回答 1

1

在您的应用程序布局中,profile变量并不总是被设置。在profiles#index 操作中,我猜您的视图中有这样的代码:@profiles.each do |profile|

这是获取配置文件的集合并遍历它们,将每个配置文件对象传递给块,在本例中是渲染链接。

在您所描述的情况下,如果您想从任何页面显示指向当前用户个人资料的链接,您首先需要查看是否有当前用户登录,然后在该当前用户上调用 profile 方法。所以:

<% if current_user %>
  <%= link_to 'Edit Profile', edit_profile_path(current_user.profile) %>
<% end %>

更一般地说,在您使用需要参数的路径帮助程序的任何情况下,您都必须确保传入已定义的变量。

于 2012-12-31T05:50:14.587 回答