我想要做的是向"待定"加入一个集团。我有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>
答案 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