2014-09-02 3 views
0

Я строил рынок и имею форму для сбора банковских реквизитов от продавцов, чтобы мы могли перечислить платежи.Rails 4 Синтаксис формы для маркера банка Stripe Bank -

Одним из параметров полосы является имя продавцов, которое представляет собой входной сигнал формы. Когда я отправляю форму, контроллер считывает это имя только в том случае, если он уже хранится в базе данных (т. Е. Если я вручную укажу имя в db, а затем запустим форму). Если имя еще не существует, оно дает мне сообщение о том, что мне нужно ввести имя для создания маркера полосы.

Как изменить форму/метод, чтобы имя было доступно для полосы, когда пользователь попадает в submit?

Вот мой метод обновления: ошибка находится в строке с : name => current_user.bankaccname. Это ввод в форме, вставленной ниже.

def update 

    Stripe.api_key = ENV["STRIPE_API_KEY"] 
     token = params[:stripeToken] 

     recipient = Stripe::Recipient.create(
     :name => current_user.bankaccname, 
     :type => "individual", 
     :bank_account => token 
     ) 

     current_user.recipient = recipient.id 
     current_user.save 

    respond_to do |format| 
     if @user.update(user_params) 
     format.html { redirect_to edit_user_url, notice: 'Your account was successfully updated.' } 
     else 
     format.html { render action: 'edit' } 
     end 
    end 
    end 

моя форма:

<%= form_for @user, url: user_path, html: { method: :put } do |f| %> 
    <div class="form-group"> 
     <%= f.label :name %><i> (as it appears in your bank account)</i> 
     <%= f.text_field :bankaccname, class:"form-control" %> 
    </div> 

<div class="form-group"> 
     <%= label_tag :country %> 
     <%= text_field_tag :country, nil, { :name => nil, :'data-stripe' => "country", class: "form-control" } %> 
    </div> 
    <div class="form-group"> 
     <%= label_tag :routing_number %> 
     <%= text_field_tag :routing_number, nil, { :name => nil, :'data-stripe' => "routingNumber", class: "form-control" } %> 
    </div> 
    <div class="form-group"> 
     <%= label_tag :account_number %> 
     <%= text_field_tag :account_number, nil, { :name => nil, :'data-stripe' => "accountNumber", class: "form-control" } %> 
    </div> 

    <div class="form-group"> 
     <%= f.submit "Submit", class:"btn btn-primary" %> 
    </div> 

<% end %> 
+0

поэтому где iz проблема.? u может вручную ввести bankaccname в форме, если не присутствует ?, а затем отправить. –

+0

Я имел в виду, что если я пойду на консоль и введите имя банковского счета в пользовательской модели, то отправьте форму, она работает. Таким образом, полоса читает имя из db, но не через форму. Есть ли способ сохранить имя в db, а затем вызвать функцию stripe? – Moosa

+1

u можете написать: name => current_user.bankaccname || user_params ["bankaccname"] –

ответ

1

проверить это, он более оптимизирован, он делает только один вызов дБ (я думаю). , и он решит вашу проблему выше.

def update 
    @user.attributes = user_params 
    Stripe.api_key = ENV["STRIPE_API_KEY"] 
     token = params[:stripeToken] 

     recipient = Stripe::Recipient.create(
     :name => @user.bankaccname, 
     :type => "individual", 
     :bank_account => token 
     ) 

    @user.recipient = recipient.id 
    respond_to do |format| 
     if @user.save 
     format.html { redirect_to edit_user_url, notice: 'Your account was successfully updated.' } 
     else 
     format.html { render action: 'edit' } 
     end 
    end 
    end 
Смежные вопросы