繁体   English   中英

如何在Ruby on Rails中将视图从“职位”应用程序渲染到我的主页上?

[英]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} %>

(假设@postPostsController#show的博客文章)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM