如何根据提交的字段之一的值在表单提交时设置其他变量?

时间:2015-07-07 14:44:37

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个表单,在create之后,我希望保存表单中未包含的其他变量。因此,在我的创建方法中,我有一行params[:invitation][:person_two_id] = @person_two.id(见下文)。通过在.save之前调用此行,我认为在保存邀请时会包含person_two_id。然而,这种情况并非如此。调试器(参见下面放置调试器的代码)显示:

  • params[:invitation][:person_two_id]101
  • @invitation nil的值为person_two_id#<Invitation id: 171, person_one_id: nil, person_two_id: nil, organization_id: 87, email: "example@example.com", message: "dsfsd", created_at: "2015-07-07 14:36:35", updated_at: "2015-07-07 14:36:35">

因此,在保存@invitation时,还没有自动保存@invitation的person_two_id值。为什么不?我该怎么办?

我的控制器方法:

def create
  @invitation = Invitation.new(new_params)
  @person_two = User.find_by(email: params[:invitation][:email].downcase)
  params[:invitation][:person_two_id] = @person_two.id
  @invitation.save
  debugger
  InvitationMailer.invitation(@invitation).deliver_now
end

1 个答案:

答案 0 :(得分:0)

我只需要将params[:invitation][:person_two_id] = @person_two.id替换为@invitation.person_two_id = @person_two.id即可。