对于会员,嵌套会员邀请,我有一个嵌套表格如下:
<%= form_for [@user, @car, @membership] do |f| %>
<%= f.hidden_field :car_id, class: "form-control", value: @car.id %>
<%= f.fields_for :membership_invites do |builder| %>
<% @code = Digest::SHA1.hexdigest([Time.now, rand].join) %>
<%= builder.hidden_field :car_id, class: "form-control", value: @car.id %>
<%= builder.hidden_field :invite_code, class: "form-control", value: @code %>
<div class="form-group">
<%= builder.label :user_email %>
<%= builder.text_field :user_email, class: "form-control" %>
</div>
<% end %>
<%= f.submit "Add Member", class: "btn btn-large btn-primary" %>
<% end %>
它运行正常并且一切都已保存,但是,我在 MembershipInvite 控制器(创建方法)中没有调用的电子邮件中有传递调用。如果表单中的某些内容属实,我只想调用此传递方法。
如何访问成员资格控制器上的嵌套表单属性(因为此create methid似乎正在调用)。它是@ membership.membership_invites_attributes吗?
会员控制
def create
@membership = Membership.create(membership_params)
#I WOULD LIVE TO SEND AN EMAIL HERE DEPENDING ON FIELDS FILLED IN FROM THE MEMBERSHIP FORM AND NESTED MEMBERSHIP INVITES FORM.
if @membership.save
redirect_to current_user, notice: "Membership created"
else
render 'new'
end
end
答案 0 :(得分:0)
我实际上已经设法在我的模型中使用after_create方法执行此操作。如果有人知道更好的方法,请告诉我!?
<强>模型强> after_create:send_invite
def send_invite
@user = User.where(email: self.user_email).first
unless @user.blank?
@membership = Membership.find(self.membership_id)
@membership.update_attributes(:user_id => @user.id)
else
InviteMailer.new_invite(self).deliver
end
end