Methods 未定义的方法'each';对于nil:NilClass,当从另一个控制器调用时

Methods 未定义的方法'each';对于nil:NilClass,当从另一个控制器调用时,methods,controller,undefined,each,Methods,Controller,Undefined,Each,我试图触发groups/show视图中的所有帖子,但我得到了错误“未定义nil:NilClass的'each'方法”。有人能帮我吗 ~~对不起,我的错误编码行为 邮政署署长: class PostsController < ApplicationController def index @posts = Post.all end def show @post = Post.find(params[:id]) end def new @pos

我试图触发groups/show视图中的所有帖子,但我得到了错误“未定义nil:NilClass的'each'方法”。有人能帮我吗

~~对不起,我的错误编码行为

邮政署署长:

class PostsController < ApplicationController

  def index
    @posts = Post.all
  end

  def show
    @post = Post.find(params[:id])
  end

  def new
    @post = Post.new
  end

  def create
    post = Post.create(permitted_params)
    redirect_to post
  end

  def edit
    @post = Post.find(params[:id])
  end

  def update
    post = Post.find(params[:id])
    post.update permitted_params
    redirect_to post
  end

  def destroy
    Post.destroy(params[:id])
    redirect_to posts_path
  end

  def permitted_params
    params.require(:post).permit(:message)
  end

end
class GroupsController < ApplicationController

  def index
  end

  def show
    @group = Group.find(params[:id])
  end


  def new
    @group = Group.new
  end

  def create
    group = Group.create(permitted_params)
    redirect_to group
  end

    def permitted_params
      params.require(:group).permit(:name)
  end

end

组控制器的“显示”操作中没有@post变量。 可能你需要一些表演动作,比如:

@posts = Post.where(group_id: @group.id)
另外,当从另一个文件夹渲染部分时,必须传递实例变量的值(如果我错了,请更正)。e、 g



并在groups\u controller.rb中通过“posts”而不是“@posts”进行迭代

def show
  @group = Group.find(params[:id])
  @posts = Post.where(group_id: @group_id)
end
分组/show.html.erb

<div class="container">

  <%= render 'posts/each', {posts: @posts} %>

  <% if user_signed_in? %>
    <p><%= link_to "Powrót", root_path %></p>
    <p><%= link_to "Usuń wiadomość", @post, method: :delete, data: { confirm:'Jesteś pewien?' } %></p>
  <% end %>
</div>

在posts/_each.html.erb中

<% posts.each do |post| %>
  <ul><i><%= link_to post.message, post %></i></ul></br>
<% end %>



    我假设:post属于组,组中有许多post
    <%= render 'posts/each', {posts: @posts} %>
    
    def show
      @group = Group.find(params[:id])
      @posts = Post.where(group_id: @group_id)
    end
    
    <div class="container">
    
      <%= render 'posts/each', {posts: @posts} %>
    
      <% if user_signed_in? %>
        <p><%= link_to "Powrót", root_path %></p>
        <p><%= link_to "Usuń wiadomość", @post, method: :delete, data: { confirm:'Jesteś pewien?' } %></p>
      <% end %>
    </div>
    
    <% posts.each do |post| %>
      <ul><i><%= link_to post.message, post %></i></ul></br>
    <% end %>