RoR渲染部分不起作用

时间:2018-03-09 16:38:29

标签: ruby-on-rails ruby

在不同视图中将此代码作为部分代码运行时遇到问题。但是,如果我尝试直接访问它,这意味着 0.0.0.0:3000/posts/_dashboard 它可以工作。从不同的角度来看,我得到了undefined method each for nil:NilClass

class PostsController < ApplicationController
    def _dashboard
       @posts = Post.all
    end
end

在帖子/ _dashboard.html.erb

下查看
<% @posts.each do |p| %>
<%= p.title %>
<%= p.description %>
<%= p.image %>
<% end %>

路由

 Rails.application.routes.draw do
  devise_for :users
  get "/site/home", to: "site#home"
  get "/posts(/:action)", to: "posts#posts"

  resources :posts
end

在不同的视图中

<%= render partial: "posts/dashboard" %> %>

1 个答案:

答案 0 :(得分:0)

您需要将帖子传递给您的部分:

<%= render partial: "posts/dashboard", posts: @posts %>

编辑你的部分:

<% posts.each do |p| %>
  <%= p.title %>
  <%= p.description %>
  <%= p.image %>
<% end %>

在控制器的部分渲染页面的操作中,添加:

@posts = Post.all
相关问题