如何显示"待定"加入集团?

时间:2015-08-21 17:19:53

标签: ruby-on-rails model-view-controller associations

我想要做的是向"待定"加入一个集团。我有3个型号:用户,会员,&组。我已让用户能够请求加入群组。当请求发出时,会员模型中有一个名为" state"我将默认值设为" pending"。群组管理员点击接受后,用户的状态将更改为"有效"。 如何仅显示"待定"中的用户?状态吗

我可以通过添加代码" @members = @group来显示请求加入群组的所有用户("待定"&"有效")。用户"在集团控制器中。当我想只显示"待定"用户我在模型组中创建了一个名为" pending_members"的方法。这没有用。

目前我收到一条错误消息:" ActionView :: MissingTemplate in Groups#show"。错误消息还突出显示代码"<%= render @members%>"。 [当我使用代码@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

以下是Groups / show.html.erb视图中的代码:

<div class="container">
    <div class="row">
        <%= render @members %>
    </div>
</div>

1 个答案:

答案 0 :(得分:1)

如果要显示处于暂挂状态的用户,则myApp.directive("widgetTemplate", function ($parse, $timeout) { return { restrict: "E", templateUrl: "widgetTemplate", replace: true, scope: { item: "=" }, link: function (scope, element, attrs) { jsPlumb.draggable(element.parent(), { containment: "parent" }); //no need to watch for items added since an instance of the directive is used for each element. }, // link } }); 方法应返回一组用户。因为它返回了一系列成员资格。

你可以这样写:

pending_members

然后为了你的观点工作,你可以把它放在

def pending_members
  User.includes(:memberships).where("memberships.state" => "pending)
end

然后你需要在<%= render partial: 'member', collection: @group.pending_members %> 目录中包含部分app/views/groups,它可能看起来像这样:

_member.html.erb