[英]How to render a view from my “posts” application onto my Home page in Ruby on Rails?
我使用<%= render 'posts/form' %>
成功地添加了“ Post”表单,但是我不想要表单,只是Show视图。 我希望主页显示所有张贴的帖子,但不希望从那里创建帖子。
编辑:我有一个静态页面作为我的主页,并且我希望我的“帖子”显示在主页的正文中,就像常规博客网站的设置一样。 我计划稍后添加一个登录功能,以访问创建/读取/更新/删除部分。 例如,我使用代码<%= render 'posts/form' %>
来使该表单显示在首页的正文中,但是我只想显示完整的“ posts”。
config / routes.rb
get 'posts#index'
root 'posts#index'
如果在路由文件中,请同时删除resources :posts
。
这样可以使带有“邮寄”表单的页面无法访问。
您也可以根据需要删除表单视图文件; 但是,您可能以后要使用它们。 posts_controller.rb文件中的new / create / edit / update操作也是如此。
您可能想为包含表单的页面添加一些身份验证? 我不确定您要做什么。
您需要更改主页控制器以查询所有帖子,然后更改视图:
家庭控制器
class HomeController < ApplicationController
def index
@posts = Posts.all
end
end
views / home / index.html.erb
<h1>Posts</h1>
<% @posts.each do |post|
<h2><%= post.title %></h2>
<div>
<%= post.body %>
</div>
<% end %>
这是Ruby on Rails控制器的基本工作 。
然后,您可以利用局部变量来干燥您的视图:
views / posts / _post.html.erb
<h2><%= post.title %></h2>
<div>
<%= post.body %>
</div>
现在views/home/index.html.erb
变成:
<h1>Posts</h1>
<% @posts.each do |post|
<%= render partial: 'posts/_post', locals: {post: post} %>
<% end %>
并且views/posts/show.html.erb
变成:
<%= render partial: 'posts/_post', locals: {post: @post} %>
(假设@post
是PostsController#show
的博客文章)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.