这是事情。我有用户和活动,我希望他们之间有邀请。这是用户可以邀请其他人参加活动。轨道邀请事件和用户控制器
我创建了一个Invitations控制器和模型。这个模型看起来像这样
user_id: (user being invited), event_id:(event_to_attend), inviter: (sent_the_invite)
我建立从控制器我被邀请去/请柬/新提交表单,但我不能让他们的工作。他们是之前创建的,但我做了一些修改,但他们没有创建,他们只是说“邀请已发送”,但没有在控制台或任何内容中创建邀请。
我知道他们的工作,因为在控制台中我做
a=User.first
a.invitations.build(event_id: 1, inviter:2)
a.save
,然后我可以看到邀请和user_id是谁创造了邀请,一个在这种情况下,我可以看到的邀请,并可以在一通过调用Event中的.invitees方法来获取用户。所以协会的工作。但我无法通过表单创建它。
这里的形式
<%= form_for(@invitation) do |f| %>
<% userArray=User.all.select{|u| u.name unless u==current_user }%>
<% names=userArray.map{|u| u.name} %>
<% events=current_user.attended_events.map{|u| u.description} %>
<%= f.label :event %>
<%= f.select :event, events %>
<%= f.label :user %>
<%= f.select :user, names %>
<%= f.submit "Send" %>
<% end %>
我只用用户和事件的描述名称为UX
这里是我的邀请控制器
类InvitationsController < ApplicationController的 包括ApplicationHelper 高清新 @邀请= Invitation.new 结束
def create #不考虑,重复的用户和同一用户的同名事件。
#user being invited
@user=User.find_by(name: params[:invitation][:user])
#event being invited to
@event=Event.find_by(description: params[:invitation][:event])
#Inviter is current user, invitee is @user
@user.invitations.build(event_id: @event.id, inviter: current_user.id)
#Event not in user.attended_events
if !(@user.attended_events.where(id: @event.id) || \
@user.invitations.where("[email protected] AND [email protected]"))
flash.now[:danger]="User is already going to the event"
render 'foo'
#render 'new'
elsif @user.save!
flash[:success]="Invitation was SENT!"
redirect_to new_invitation_path
else
flash.now[:danger]="Please select both options"
render 'foobar'
#render 'new'
end
end