[英]missing partials with rails
def some_action
@posts = Post.all
render partial: 'layouts/things'
end
In my layouts directory I have things as partial ( _things.html.erb
) 在我的布局目录中,我将部分内容(
_things.html.erb
)
My other partials work fine. 我的其他部分效果很好。 But it doesn't render partial throwing exception as
但是它不会导致部分抛出异常
Missing partial layouts/things with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "/my/path/appname/app/views"
Edit-1 编辑1
def some_action
@posts = Post.all
respond_to do |format|
format.json
end
end
Ok i changed my controller link this but then too same exception. 好吧,我改变了我的控制器链接,但随后又出现了同样的异常。
Edit-2 编辑2
I have created in my views/controller_name/_some_action.json.erb
我已经在我的
views/controller_name/_some_action.json.erb
创建了
This is the controller 这是控制器
def some_action
@posts = Post.all
respond_to do |format|
format.json { render json: @posts }
end
end
My _some_action.json.erb file has 我的_some_action.json.erb文件具有
<%= render partial: 'shared/information', post: @posts.name %>
And created _information..js.erb
in views shared directory 并在视图共享目录中创建
_information..js.erb
MY _information.js.erb has sample text as 我的_information.js.erb的示例文本为
test
I am getting json response from controller i checked with inspect element. 我从检查元素检查的控制器中收到json响应。 But it is not render actual text i need (ie,
test
) 但这不是呈现我需要的实际文本(即
test
)
well, IMHO you need to name your partial like 好吧,恕我直言,您需要命名您的部分喜欢
_things.js.erb
or no? 或者没有?
As Jacub Kuchar mentions, if you're trying to provide a JSON response, your partial should be named accordingly (ie _things.js.erb
). 正如Jacub Kuchar提到的那样,如果您尝试提供JSON响应,则应相应地命名您的部分(即
_things.js.erb
)。 You should also put it in the 'shared' directory rather than 'layouts' as it's a partial, not a layout. 您还应该将其放置在“共享”目录中,而不是在“布局”中,因为它是部分布局,而不是布局。
However, I'd also keep the logic of which view to render of the controller and let the view itself handle it. 但是,我还将保留呈现控制器的哪个视图的逻辑,并让视图本身进行处理。
So your controller can simply say: 因此,您的控制器可以简单地说:
respond_to :json # (and whatever other response types you want to support: xml, etc)
def some_action
respond_with @posts = Post.all
end
And then having a matching view, under views/{controller name}/some_action.js.erb, which says: 然后在views / {controller name} /some_action.js.erb下拥有一个匹配的视图,该视图显示:
<%= render partial: 'shared/things', posts: @posts %>
That way your controller isn't polluted with view logic. 这样,您的控制器就不会受到视图逻辑的污染。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.