【问题标题】:Rails accessing controller actions in a nested attribute formRails 以嵌套的属性形式访问控制器操作
【发布时间】:2015-03-29 21:34:53
【问题描述】:

我有一个嵌套的 Membership 表单,其中包含嵌套的 MembershipInvite

<%= 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 控制器(创建方法)中有一个 deliver 调用电子邮件,它没有调用。如果表单中的某些内容为真,我只想调用此交付方法。

如何访问 Membership 控制器上的嵌套表单属性(因为这个 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

【问题讨论】:

    标签: ruby-on-rails forms controller nested nested-forms


    【解决方案1】:

    我实际上已经在我的模型中使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多