问题:当我尝试将表单数据从一个控制器保存到另一个控制器时,我收到错误消息(在下面列出)。
StripeAccount(#473341532384680)已预期,得到了“ acct_7424613FLPIHiXZ” 这是String(#47334237953540)的实例
问题:我的代码在创建什么错误?
我有可以正常使用的表单输入,但是我想从中获取一些数据并将其附加到其他控制器上。
该表格适用于用户和stripe_account控制器。我想从stripe_account中获取acct.id,并将其保存在stripe_account下的@user表中。
用户模型:
has_one :stripe_account
Stripe_account模型:
belongs_to :users
Controller Stripe_account:
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])
@stripe_account.user_id = current_user.id
acct = Stripe::Account.create({
.....
.....
@stripe_account.acct_id = acct.id
#below is what isn't working
@user.stripe_account = acct.id
respond_to do |format|
if @stripe_account.save!
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
查看:
<%= form_for ([@user, @stripe_account]) do | f | %>
路线:
resources :users do
resources :stripe_accounts
end
但收到错误:预期为StripeAccount(#473341532384680),得到了“ acct_7424613FLPIHiXZ”,它是String(#47334237953540)的实例
...在“用户”模式中,我将“ stripe_account”设置为字符串。
我尝试过
acct_id = current_user.stripe_account
及其它的其他迭代。我假设问题出在我的模型中,所以我尝试了: accepts_nested_attributes_for:stripe_account 但是出现了同样的错误。
答案 0 :(得分:0)
万一有人碰到这个。我在将数据从表单记录到2个控制器表时遇到问题。
这就是我所做的修复工作(感谢stackO用户)@arieljuod
replacing:
# @stripe_account = StripeAccount.new(stripe_account_params)
# @user = User.find(params[:user_id])
# @stripe_account.user_id = current_user.id
with:
@user = User.find(params[:user_id])
@stripe_account = @user.build_stripe_account(stripe_account_params)
//and then saving from this://
if @stripe_account.save!
//to this://
if @stripe_account.save! && @user.save