如何将Application.html.erb上的链接添加到其他视图?

时间:2012-12-31 05:42:46

标签: ruby-on-rails ruby-on-rails-3

我有一个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>

我错过了什么?

1 个答案:

答案 0 :(得分:1)

在您的应用程序布局中,profile变量始终未设置。在个人资料#index action中我猜你在视图中有这样的代码:@profiles.each do |profile|

收集一些配置文件并迭代它们,将每个配置文件对象传递给块,在这种情况下是渲染链接。

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

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

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