【发布时间】:2018-03-10 17:31:40
【问题描述】:
我正在使用 Ruby on Rails 构建一个简单的应用程序。我的数据库中有三个表:users、events 和 invites。
任何用户都可以通过表单创建邀请,在表单中他/她选择他/她想要邀请的用户,以及他/她想要邀请的事件想邀请那个人。
现在,我希望每次有人创建邀请时,他/她也会邀请另一个名为“Intruder”的用户。
因此,每次提交邀请表单时,都应在数据库中插入两行:
- 首先是用户选择的数据
- 第二个地方 user_id 与“入侵者”的 id 匹配,而 event_id 与第一行相同。
这是我的邀请控制器:
def new
@invite = Invite.new
@users = User.where.not(:id => current_user).order(full_name: :ASC)
@user = User.new
@events = Event.where(:user_id => current_user).order(startsAt: :ASC)
@event = Event.new
end
def create
@users = User.where.not(:id => current_user).order(full_name: :ASC)
@user = User.new
@events = Event.where(:user_id => current_user).order(startsAt: :ASC)
@event = Event.new
@invite = Invite.new(invite_params)
respond_to do |format|
if @invite.save
format.html { redirect_to events_path, notice: 'Invite was successfully created.' }
format.json { render :show, status: :created, location: @invite }
else
format.html { render :new }
format.json { render json: @invite.errors, status: :unprocessable_entity }
end
end
end
def invite_params
params.require(:invite).permit(:attending, :user_id, :event_id)
end
这是我创建新邀请的表单:
<%= form_for(@invite) do |f| %>
<% if @invite.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@invite.errors.count, "error") %> prohibited this invite from being saved:</h2>
<ul>
<% @invite.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :user_id, 'Name' %>
<%= f.select :user_id, options_for_select(@users.collect { | user | [user.full_name, user.id] }, @user.id), {}, class: 'inv-select' %>
</div>
<div class="field">
<%= f.label :event_id %>
<%= f.select :event_id, options_for_select(@events.collect { | event | [event.title, event.id] }, @event.id), {}, class: 'inv-select' %>
</div>
<div class="actions">
<%= f.submit 'Invite' %>
</div>
<% end %>
【问题讨论】:
标签: ruby-on-rails