Why isn't my form saving but working with the API only?

uno

I have my form to save to my Stripe_account table. I recently nested the resources and now the form won't save to my database tables. I have it still working with the Stripe API and working there though.

What in my code is lacking?

User Model:

  has_one :stripe_account

Stripe_account Model:

  belongs_to :users

Stripe_account controller:

    def new
        @stripe_account = StripeAccount.new
        @user = User.find(params[:user_id])

      end

    def create

        @stripe_account = StripeAccount.new(stripe_account_params)
        @user = User.find(params[:user_id])
          acct = Stripe::Account.create({
.....
.....
    @stripe_account.id = current_user.id
    @stripe_account.acct_id = acct.id

  respond_to do |format|

      # @user = User.find(params[:id])

      if @stripe_account.save
        # current_user = @user
        @user.stripe_account = acct.id


        format.html { redirect_to new_bank_account_path, notice: 'Stripe account was successfully created.' }
        format.json { render :show, status: :created, location: @stripe_account }


      else
        format.html { render :new }
        format.json { render json: @stripe_account.errors, status: :unprocessable_entity }
      end
    end
  end

View:

  <%= form_for ([@user, @stripe_account]) do | f | %>

Routes:

resources :users do
    resources :stripe_accounts
  end

#added for testing 
  get 'stripe_' => "stripe_account#create"
  get 'stripe_new' => "stripe_account#new"

Here's my routes maybe can help?: https://pastebin.com/RVWd2Qq9

Now even though I don't have the "bankaccount" controller or models set up correctly yet, shouldn't it be at least attempting to go there and saving the stripe_account? Just making sure that's not the issue. But it appears it's failing because a new form reloads.

The API is successfully going through as well and the accounts are appearing within stripe, just not my own database.

What in my programming is wrong?

Update to add cmd response:

Started POST "/users/2/stripe_accounts" for 127.0.0.1 at 2018-11-10 00:11:26 -0500
Processing by StripeAccountsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"nz1234567890iJuFwsm/Z4ylhE6zoGdWN6QCfWtDZTH1sxZu/WCdWMKBGkc4zoZ2dOgk9c8UDwRzgqdxrT/sA==", "stripe_account"=>{"account_type"=>"individual", "business_name"=>"", "business_tax_id"=>"", "first_name"=>"Dill", "last_name"=>"Pickles", "ssn_last_4"=>"1234", "dob_month"=>"3", "dob_day"=>"4", "dob_year"=>"1917", "address_line1"=>"198 berry avenue", "address_city"=>"san fran", "address_state"=>"CA", "address_postal"=>"90213", "tos"=>"1", "id"=>"2"}, "full_account"=>"{:value=>\"true\"}", "button"=>"", "user_id"=>"2"}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 2], ["LIMIT", 1]]
  ↳ /home/bob/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 2], ["LIMIT", 1]]
  ↳ app/controllers/stripe_accounts_controller.rb:49
   (0.1ms)  begin transaction
  ↳ app/controllers/stripe_accounts_controller.rb:91
   (0.1ms)  rollback transaction
  ↳ app/controllers/stripe_accounts_controller.rb:91
  Rendering stripe_accounts/new.html.erb within layouts/application
  Rendered stripe_accounts/_account_form.html.erb (9.4ms)
  Rendered stripe_accounts/new.html.erb within layouts/application (12.5ms)
  Rendered layouts/_navbar.html.erb (1.9ms)
  Rendered layouts/_footer.html.erb (0.4ms)
Completed 200 OK in 3202ms (Views: 190.0ms | ActiveRecord: 2.4ms)
Pavan

Validation failed: User must exist

You can either use optional :true to resolve the error

#stipe_account.rb
belongs_to :user, optional: true
            #^ should be singular

OR

Assign the user_id in the create action like so

@stripe_account.user_id = current_user.id #add this line

Update:

undefined method `user_id=' for StripeAccount:0x001234f4c58692ae8 Did you mean? user="

The error is because you don't have user_id column in stripe_accounts table. Generate a migration that will do the job for you

rails g migration add_user_id_to_stripe_accounts user_id:integer

and do rails db:migrate

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

TOP Ranking

HotTag

Archive