Я прошел через ряд подобных вопросов, но все еще не могу определить множественные перенаправления в своем действии. Можете ли вы мне помочь? Также есть ли общие подсказки для избежания так называемой Double Render Error?Rails: Помогите определить множественное перенаправление в этом действии, пожалуйста
Код выглядит следующим образом:
def st_buy_now_process
#create user in system
encrypted = BCrypt::Password.create(params[:password])
if (User.where("email = ?", params[:email]).exists?)
flash[:alert] = 'User exists. Please try again.'
redirect_to "/st_buy_now"
elsif (User.create(email: params[:email], encrypted_password: encrypted))
begin
customer = Stripe::Customer.create({
:description => params[:email],
:card => {
:number => params[:cc],
:exp_month => params[:exp_1],
:exp_year => params[:exp_2],
:cvc => params[:cvc],
:name => params[:name]
},
:email => params['email']
})
p="#{params['plan']}_#{params['billing-cycle']}"
subscr = customer.subscriptions.create(:plan => p)
user = User.where("email = ?", params[:email]).first
user.payg = ({:cus_id => customer.id, :subscr_id => subscr.id}).to_json
user.plan = p
user.save
rescue Stripe::CardError => e
flash[:alert] = 'Please try again'
redirect_to "/st_buy_now"
end
RestClient.post "https://api:key-nnnn",
:from => "<[email protected]>",
:to => "#{params[:email]}",
:subject => "Welcome to test",
:text => "\n\n\n#{File.read("app/views/misc/mail_sign_up.txt")}\n\n\n"
cookies['logged_in'] = {
:value => '1',
}
cookies['us_id'] = {
:value => params[:email],
}
flash[:notice] = 'Registration successful.'
redirect_to :controller => 'misc', :action => 'create_1'
else
flash[:alert] = 'Please try again'
redirect_to "/st_buy_now"
end
end
сообщение об ошибке указывает на последний, но один редирект - линия после "Registration successful."
предупреждения.
Можете ли вы отформатировать его должным образом. – Sontya
У вас есть две переадресации, если вы создаете «Пользователь», и есть 'Stripe :: CardError' (в разделе' elsif'). – ptd
Согласен с @ptd. Вы должны закончить работу в разделе 'rescue' или изменить порядок' begin ... end' с помощью 'if ... elsif ... else' и использовать 'flash [: alert] ...' только один раз. – PatNowak