我有一个Profile scaffold(和用Devise创建的User),每个用户都有一个配置文件,并希望从我的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>
我错过了什么?
答案 0 :(得分:1)
在您的应用程序布局中,profile
变量始终未设置。在个人资料#index action中我猜你在视图中有这样的代码:@profiles.each do |profile|
收集一些配置文件并迭代它们,将每个配置文件对象传递给块,在这种情况下是渲染链接。
在您要描述的情况下,如果您想要从任何页面显示当前用户个人资料的链接,您首先需要查看是否有当前用户登录,然后调用当前用户的配置文件方法。所以:
<% if current_user %>
<%= link_to 'Edit Profile', edit_profile_path(current_user.profile) %>
<% end %>
更一般地说,在任何使用需要参数的路径助手的情况下,您必须确保传入已定义的变量。