我有两个像这样的控制器:
应用程序/控制器/ collection_controller.rb:
class CollectionController < ApplicationController
def create
@collection = Collection.new(name: params[:name])
@collection.save!
render @collection
end
end
一个继承的类:
应用程序/控制器/企业/ collection_controller.rb:
class Enterprise::CollectionController < ::CollectionController
def create
@collection = Collection.new(name: params[:name])
@collection.company = Company.find(params[:company])
@collection.save!
render @collection
end
end
我有两个部分:
应用程序/视图/集合/ _collection.json.jbuilder:
json.extract! collection, :title, :description
json.users do
json.partial! collection.user
end
应用程序/视图/集合/ _user.json.jbuilder:
json.extract! user, :name, :surname
问题是:
当我加载Enterprise::CollectionController#create
时,我得到missing template app/views/enterprise/collections/_collection ...
。
我希望Enterprise :: CollectionController使用app/view/collections/_collection.json.jbuilder
而不是app/view/enterprise/collections/_collection.json.jbuilder
。
我尝试过这样的事情:
render @collection, partial: 'collections/collection', but I receive:
但我收到了:
missing template for ... app/views/enterprise/users/_user ...
我该如何解决这个问题?
答案 0 :(得分:1)
将渲染部分更改为
render @collection, partial: 'collections/collection'
您没有收到collection
部分错误。你得到user
部分错误。您将不得不改变将用户局部渲染为
json.partial! "collections/user", user: collection.user
<强>更新强>
你可以尝试append_view_path。所以基本上你会附加到默认的搜索位置
class Enterprise::CollectionController < ::CollectionController
before_filter :append_view_paths
def append_view_paths
append_view_path "app/views/collections"
end
end
因此rails会按顺序搜索app/views/enterprise/collections, app/views/shared, app/views/collections
如果您希望rails prepend_view_path
首先搜索
app/views/collections
PS:我还没有测试过这个。