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

时间:2015-04-07 04:36:59

标签: ruby-on-rails

我使用<%= render 'posts/form' %>成功添加了“发布”表单,但我不想要表单,只需要显示视图。我希望主页显示所有发布的帖子,但我不希望从那里创建帖子。

编辑:我有一个静态页面作为我的主页,我希望我的“帖子”显示在主页的正文中,就像常规的博客网站的设置一样。我计划稍后添加一个登录功能来访问创建/读取/更新/删除部分。例如,我使用代码<%= render 'posts/form' %>使表单显示在主页的正文中,但我想只显示已完成的“帖子”。

2 个答案:

答案 0 :(得分:0)

配置/ routes.rb中

get 'posts#index'
root 'posts#index'

如果它位于路线文件中,也请删除resources :posts

这将使得无法访问包含Post表单的页面。

如果您愿意,也可以删除表单视图文件;但是,您可能希望以后再使用它们。对于posts_controller.rb文件中的new / create / edit / update操作也是如此。

您可能想为包含表单的页面添加一些身份验证吗?我不确定你到底要做什么。

答案 1 :(得分:0)

您需要更改家庭控制器以查询所有帖子,然后更改视图:

<强>的HomeController

class HomeController < ApplicationController
  def index
    @posts = Posts.all
  end
end

<强>视图/家/ index.html.erb

<h1>Posts</h1>

<% @posts.each do |post|
  <h2><%= post.title %></h2>
  <div>
    <%= post.body %>
  </div>
<% end %>

这是基本的Ruby on Rails controller work

然后,您可以使用部分内容来干扰您的观看次数:

<强>视图/帖/ _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是<{1}}中的博客帖子