Rails:为嵌套资源渲染部分

时间:2015-08-12 15:21:09

标签: ruby-on-rails ruby-on-rails-4 resources partial

# routes.rb
resources :topics do
  resources :bookmarks, except: [:index]
end

我的书签模型的视图文件位于app/views/topics/bookmarks

enter image description here

我在views/topics/_topic.html.erb

中呈现部分书签
...
<% if topic.bookmarks.count > 0 %>
  <% topic.bookmarks.each do |bookmark| %>
    <%= render partial: 'topics/bookmarks/bookmark', locals: { topic: topic, bookmark: bookmark } %>
  <% end %>
<% end %>
...

我的问题是我在尝试渲染书签部分时收到了模板丢失错误。我传递给render partial:的路径不正确吗?我也试过render partial: 'bookmarks/bookmark

Missing template bookmarks/edit, application/edit with {:locale=>[:en], :formats=>[:html], :variants=>[], 
:handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. 
Searched in: * "/Users/..../dev/.../.../code/.../app/views" *
"/Users/.../.rvm/gems/ruby-2.2.1/gems/devise-3.5.1/app/views"

以下是完整的堆栈跟踪:https://goo.gl/wd3oqQ

1 个答案:

答案 0 :(得分:1)

我认为你的控制器应该遵循你想要在views文件夹中使用的相同结构,所以你的书签控制器应该像这样定义:

class Topics::BookmarksController < ApplicationController

它应该放在/ controllers / topics /文件夹中。

您可以在Rails guide

中看到与此相关的内容