0

我有一个带有 edit_profile_path 的配置文件资源

现在我正在尝试在站点范围的菜单上添加它的链接,因此在 application.html.erb 上添加了链接

<%= link_to 'My Profile', edit_profile_path %>

所有这些看起来都非常简单,但我遇到了错误

No route matches {:action=>"edit", :controller=>"profiles"}

我做了一些搜索,发现了这个Rails 3 - 嵌套资源路由 - 一对一关系,但这里的问题是我没有的嵌套路由,这是我的 rake 路由给出的

edit_profile GET    /profiles/:id/edit(.:format)    profiles#edit

我正在使用设计,但不确定这与它有什么关系,尽管我确实有

@profile = current_user.build_profile(params[:profile])

在profiles.controller.rb

知道如何在 application.html.erb 上显示个人资料链接吗?我确信这是我错过的非常小的东西

编辑- 我(@profile)在 link_to 路径中添加了,现在我收到了这个错误 -

No route matches {:action=>"edit", :controller=>"profiles", :id=>nil}?

我正在使用设计并且正在使用@profile = current_user.build_profile(params[:profile]) in profiles_controller.rb

4

3 回答 3

1

当您的配置文件模型 *belongs_to* 用户之一时,配置文件对象的创建需要引用与哪个用户对象相关联。因此,您需要同时传递current_user@profile

edit_profile_path(current_user, @profile)

于 2013-06-18T18:13:27.787 回答
0

也许你需要传递edit_profile_path一个参数......

<%= link_to 'My Profile', edit_profile_path(@profile) %>
于 2013-06-18T18:13:14.670 回答
0

你需要提供一个存在于数据库中的对象。构建并不意味着对象已被保存。因此它的传递 id 为 nil。

edit_profile_path(@profile) #@profile needs to exist in db. 
于 2013-06-18T18:32:19.867 回答