我有两个资源,Clients
和Projects
。
在routes.rb
:
resources :clients do
resources :projects
end
rake routes
为我提供client_project
操作的路由前缀projects#show
在我看来,我打电话给:
<% @client.projects.each do |project| %>
<%= link_to project.name, project %>
<% end %>
并且Rails不断抛出错误:undefined method project_path
,它告诉我由于某种原因该视图试图调用project_path
而不是client_project_path
。我尝试重新启动我的服务器(甚至重新启动我的电脑),似乎无法找到为什么它不会正确调用路由。我最近重构了我的路线(这导致了这个突破)。我在这里错过了什么吗?这个确切的模式适用于我的应用程序中的每个其他模型,只有重构的路径不适用。
答案 0 :(得分:0)
我从来没有成功通过简单地将有问题的对象作为link_to
的url参数传递来获得嵌套路由......加上(也许只是我)我喜欢我的模板有点像比那更“明确”。
你可以做几件事:
<%= link_to project.name, url_for([@client, project]) %>
或
<%= link_to project.name, client_project_path(@client, project) %>
答案 1 :(得分:0)
如果项目是嵌套路由,除非您明确定义,否则它将没有project_path路由。项目URL需要客户端。看看http://guides.rubyonrails.org/routing.html#nested-resources