In my rails app, during checkout, the user contact details are pulled from user profile by default, but if for example the phone_number is empty in profile table, the field will be left empty. Once checkout if the user change or maintain the data, the data will be saved to contact_details table and user will be redirect to PayPal, in case user cancel the payment in PayPal, they will return back to checkout page and existing data are pulled from previously saved contact_details table.
Now the issues is, how can I can display user profile in the fields, but save the data to contact_details? Following were my code
<%= form_for(@invoice) do |f| %>
<div class="form-block">
<div class="form-group col-md-6 firstname">
<label for="sec">First Name:</label>
<input type="text" placeholder='First Name' class="form-control input-pay" id="sec" name="contact_detail[first_name]" value="<%= @current_user.profile.first_name %>">
</div>
<div class="form-group col-md-6 firstname">
<label for="sec">Email:</label>
<input type="text" placeholder='Email' class="form-control input-pay" id="sec" name="contact_detail[email]" value="<%= @current_user.email %>">
</div>
</div>
<% end %>
controller:
def new
@invoice = Invoice.new
if request.post?
@invoice.booking_date = params[:datepicker]
@invoice.product_id = params["product-id"]
@invoice.variants = params[:variant]
if !user_signed_in?
session[:pending_invoice] = @invoice
return redirect_to new_user_session_path
end
set_extra_params_for_new
@invoice_params = {}
@contact_detail_params = {}
else
if (session[:pending_invoice].present?) && (session[:pending_invoice].instance_of? Invoice)
@invoice = session[:pending_invoice]
set_extra_params_for_new
@invoice_params = {}
@contact_detail_params = {}
session[:pending_invoice] = nil
else
@invoice.booking_date = params[:invoice][:booking_date]
@invoice.product_id = params[:invoice][:product_id]
@invoice.coupon_id = params[:invoice][:coupon_id]
@invoice.coupon_amounts = params[:invoice][:coupon_amounts]
@coupon_amounts_with_user_currency = params[:invoice][:coupon_amounts_with_user_currency]
@invoice.variants = params[:variant]
set_extra_params_for_new
@invoice_params = params[:invoice]
@contact_detail_params = params[:contact_detail]
end
end
set_invoice_currency_attributes(@invoice)
gon.invoice = @invoice
gon.real_total_with_currency = @invoice.real_total_with_currency
gon.real_total = @invoice.real_total
end
private
def contact_detail_params
params.require(:contact_detail).permit(:first_name, :last_name, :email, :phone_number, :message)
end
Aucun commentaire:
Enregistrer un commentaire