Ruby on rails 我如何向“用户”显示;待决“;加入团队?

Ruby on rails 我如何向“用户”显示;待决“;加入团队?,ruby-on-rails,model-view-controller,associations,Ruby On Rails,Model View Controller,Associations,我想做的是显示“挂起”加入组的用户。我有3个模型:用户、成员和组。我已使用户能够请求加入组。当发出请求时,成员模型中有一个名为“state”的属性,我将其默认值设置为“pending”。组管理员单击“接受”后,用户的状态将更改为“活动”如何仅显示处于“挂起”状态的用户? 通过在组控制器中添加代码“@members=@Group.Users”,我可以显示请求加入组的所有用户(包括“待定”和“活动”)。当我只想显示“待定”用户时,我在模型组中创建了一个名为“待定成员”的方法。这不管用 目前,我收到一

我想做的是显示“挂起”加入组的用户。我有3个模型:用户、成员和组。我已使用户能够请求加入组。当发出请求时,成员模型中有一个名为“state”的属性,我将其默认值设置为“pending”。组管理员单击“接受”后,用户的状态将更改为“活动”如何仅显示处于“挂起”状态的用户?

通过在组控制器中添加代码“@members=@Group.Users”,我可以显示请求加入组的所有用户(包括“待定”和“活动”)。当我只想显示“待定”用户时,我在模型组中创建了一个名为“待定成员”的方法。这不管用

目前,我收到一条错误消息:“ActionView::MissingTemplate in Groups#show”。错误消息还突出显示代码“”。[当我使用代码@members=@group.users时,网页会同时显示“待定”和“活动”用户]


以下是每个模型属性:

create_table "groups", force: :cascade do |t|
  t.string   "name"
end

create_table "memberships", force: :cascade do |t|
  t.integer  "user_id"
  t.integer  "group_id"
  t.string   "state",   default: "pending"
end

create_table "users", force: :cascade do |t|
  t.string   "email"
  t.string   "first_name"
  t.string   "last_name"
end
class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :groups, through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships
end
def show
    @group = Group.find(params[:id])
    @members = @group.pending_members
end
def pending_members
  Membership.where(state: "pending")
end
<div class="container">
    <div class="row">
        <%= render @members %>
    </div>
</div>
以下是每个型号的代码:

create_table "groups", force: :cascade do |t|
  t.string   "name"
end

create_table "memberships", force: :cascade do |t|
  t.integer  "user_id"
  t.integer  "group_id"
  t.string   "state",   default: "pending"
end

create_table "users", force: :cascade do |t|
  t.string   "email"
  t.string   "first_name"
  t.string   "last_name"
end
class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :groups, through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships
end
def show
    @group = Group.find(params[:id])
    @members = @group.pending_members
end
def pending_members
  Membership.where(state: "pending")
end
<div class="container">
    <div class="row">
        <%= render @members %>
    </div>
</div>
以下是组模型中的代码:

create_table "groups", force: :cascade do |t|
  t.string   "name"
end

create_table "memberships", force: :cascade do |t|
  t.integer  "user_id"
  t.integer  "group_id"
  t.string   "state",   default: "pending"
end

create_table "users", force: :cascade do |t|
  t.string   "email"
  t.string   "first_name"
  t.string   "last_name"
end
class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :groups, through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships
end
def show
    @group = Group.find(params[:id])
    @members = @group.pending_members
end
def pending_members
  Membership.where(state: "pending")
end
<div class="container">
    <div class="row">
        <%= render @members %>
    </div>
</div>
以下是Groups/show.html.erb视图中的代码:

create_table "groups", force: :cascade do |t|
  t.string   "name"
end

create_table "memberships", force: :cascade do |t|
  t.integer  "user_id"
  t.integer  "group_id"
  t.string   "state",   default: "pending"
end

create_table "users", force: :cascade do |t|
  t.string   "email"
  t.string   "first_name"
  t.string   "last_name"
end
class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :groups, through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships
end
def show
    @group = Group.find(params[:id])
    @members = @group.pending_members
end
def pending_members
  Membership.where(state: "pending")
end
<div class="container">
    <div class="row">
        <%= render @members %>
    </div>
</div>

如果您想显示处于挂起状态的用户,那么您的
pending_成员
方法应该返回一个用户集合。它返回一组成员资格

你可以这样写:

def pending_members
  User.includes(:memberships).where("memberships.state" => "pending)
end
<div id="user-<%= member.id %>">
  <p>name: <%= member.first_name %> <%= member.last_name %></p>
  <p>email: <%= member.email %></p>
</div>
那么为了让你的观点发挥作用,你可以把这个放进去

<%= render partial: 'member', collection: @group.pending_members %>

您的_成员部分中有什么,它在哪个目录中?