def some_action
@posts = Post.all
render partial: 'layouts/things'
end
在我的布局目录中,我将部分内容(_things.html.erb
)
我的其他部分工作正常。但它不会将部分抛出异常视为
Missing partial layouts/things with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "/my/path/appname/app/views"
修改-1
def some_action
@posts = Post.all
respond_to do |format|
format.json
end
end
好的,我改变了我的控制器链接,但后来也是一样的例外。
修改-2
我已在views/controller_name/_some_action.json.erb
这是控制器
def some_action
@posts = Post.all
respond_to do |format|
format.json { render json: @posts }
end
end
我的_some_action.json.erb文件有
<%= render partial: 'shared/information', post: @posts.name %>
在视图共享目录
中创建_information..js.erb
MY _information.js.erb的示例文本为
test
我从控制器获取json响应,我使用inspect元素检查。但它不是我需要的实际文本(即test
)
答案 0 :(得分:1)
_things.js.erb
还是不?
答案 1 :(得分:1)
正如Jacub Kuchar所提到的,如果您尝试提供JSON响应,则应该相应地命名您的部分(即_things.js.erb
)。你也应该把它放在'共享'目录而不是'布局'中,因为它是局部的,而不是布局。
但是,我还会保留哪个视图的逻辑来呈现控制器,并让视图本身处理它。
所以你的控制器可以简单地说:
respond_to :json # (and whatever other response types you want to support: xml, etc)
def some_action
respond_with @posts = Post.all
end
然后在views / {controller name} /some_action.js.erb下有一个匹配的视图,其中说:
<%= render partial: 'shared/things', posts: @posts %>
这样你的控制器就不会受到视图逻辑的污染。