Ruby on rails Rails 5 ActionView::Helpers捕获方法
我是RubyonRails新手,我想练习一下。 当我想在她的视图中包含一个视图时,我被卡住了。 我希望通过这样做将我的帖子放到另一个视图中,而不是帖子/索引视图中Ruby on rails Rails 5 ActionView::Helpers捕获方法,ruby-on-rails,Ruby On Rails,我是RubyonRails新手,我想练习一下。 当我想在她的视图中包含一个视图时,我被卡住了。 我希望通过这样做将我的帖子放到另一个视图中,而不是帖子/索引视图中 posts/index <h1> Index Of another pages </h1> <%= @posts %> 方法: def index @Posts = Post.all end 视图: <% @posts = capture do %> <%
posts/index
<h1> Index Of another pages </h1>
<%= @posts %>
- 方法:
def index @Posts = Post.all end
- 视图:
<% @posts = capture do %> <% @posts.each do |post| %> <h3> <%= post.title %> </h3> <p> <%= post.content %> </p> <% end %> <% end %>
在我看来,您需要将可重用视图代码保存为部分代码,并在所有需要的地方呈现它 要使用分部,请使用下划线前缀将其保存下来,即
然后,可以使用以下方法渲染:\u posts.html.erb
在两个控制器的<%= render 'path/to/posts' %>
操作:索引中
在posts/index视图中:@posts=Post.all
在“页面/索引”视图中:
我不想把事情搞混,但是Rails有一点魔力- 或者-您可以定义部分
,如下所示:\u post.html.erb
<h3> <%= post.title %> </h3> <p> <%= post.content %> </p>
只需在每个视图中调用
。这将是最好的“粗暴”做事方式
让我知道你进展如何 如果要强制索引操作渲染另一个视图,请执行以下代码:def index @Posts = Post.all render 'pages/index' end
如果我没有得到你的消息,请纠正我它不起作用,并且我有一个错误,丢失了部分帖子/_帖子,{:locale=>[:en],:formats=>[:html],:variants=>[],:handlers=>[:raw,:erb,:html,:builder,:ruby,:coffee,:jbuilder]}。搜索:如果我这样做,我需要将posts模型声明到视图中?如果是,我将调用n+1一个数据库请求no,如“SELECT*FROM POSTS”?您在哪里创建了分部?你需要确保你使用了正确的路径。您应该在呈现视图的控制器中加载帖子-我对您在其中使用这些部分的上下文有点不清楚,但是如果您正确加载/包含所需帖子,则不需要N+1。也许可以在问题中添加更多的内容?仅供参考,这里是使用部分的文档:我有两个目录,一个用于帖子的目录,另一个用于静态页面,我没有使用部分,但我使用rails方法将内容页面包含到另一个页面中。这不起作用,我想把我的帖子包括在(n+1)页中。<h3> <%= post.title %> </h3> <p> <%= post.content %> </p>
def index @Posts = Post.all render 'pages/index' end