Я нахожусь в логической «вилке» на дороге, где пользователь может выбрать план оплаты моего сервиса или использовать «код купона», который они предварительно приобрели. У меня есть функциональность для выбора «плана платежей», и теперь я работаю над другой вилкой на дороге, но чувствую, что все происходит неправильно. Я закончил копирование и адаптацию функциональности «плана платежей» с включением coupon_code
... поэтому у меня есть отдельный маршрут, если они предпочитают использовать купон, а также отдельные виды и методы контроллера.Rails redirect_to not rendering
В конце концов, мне нужно будет создать «клиент» для будущей оплаты, вместо того, что у меня есть, что создает «клиент» и сразу же заряжает их, следовательно, потребность в вилке в дорога (я думаю).
Конечно, я мог бы обойти это все неправильно, поэтому, пожалуйста, дайте мне знать, если есть лучший способ.
Вот что у меня есть, пытаясь заставить работать код купона, однако он не перенаправляется на новый вид, хотя журналы говорят, что «POST», похоже, работает нормально. Я не знаю, почему журнал показывает, что он пытается оказать packages/show.json.jbuilder
который я предполагаю, проблема здесь:
консоли журнала
Started POST "/packages/coupon" for 127.0.0.1 at 2016-03-25 10:52:17 -0500
Processing by PackagesController#coupon as JS
Parameters: {"utf8"=>"✓", "coupon_code"=>"59ee713a79b44af780c7b7c54f046570"}
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = 16 ORDER BY "users"."id" ASC LIMIT 1
Role Load (0.6ms) SELECT "roles".* FROM "roles" INNER JOIN "roles_users" ON "roles"."id" = "roles_users"."role_id" WHERE "roles"."deleted_at" IS NULL AND "roles_users"."user_id" = $1 [["user_id", 16]]
Device Load (34.9ms) SELECT "devices".* FROM "devices" WHERE "devices"."identifier" = '59ee713a79b44af780c7b7c54f046570' ORDER BY "devices"."id" ASC LIMIT 1
Redirected to http://localhost:3000/packages/coupon
Completed 302 Found in 59ms (ActiveRecord: 36.4ms)
Started GET "/packages/coupon" for 127.0.0.1 at 2016-03-25 10:52:17 -0500
Processing by PackagesController#show as JS
Parameters: {"id"=>"coupon"}
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = 16 ORDER BY "users"."id" ASC LIMIT 1
Role Load (0.6ms) SELECT "roles".* FROM "roles" INNER JOIN "roles_users" ON "roles"."id" = "roles_users"."role_id" WHERE "roles"."deleted_at" IS NULL AND "roles_users"."user_id" = $1 [["user_id", 16]]
Rendered packages/show.json.jbuilder (8.5ms)
Completed 200 OK in 51ms (Views: 44.8ms | ActiveRecord: 1.4ms | Solr: 0.0ms)
просмотров/пакеты/индекс .html.erb
<!-- Modal -->
<div class="modal fade" id="couponModal" tabindex="-1" role="dialog" aria-labelledby="couponModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="couponModalLabel">Enter Coupon Code</h4>
</div>
<div class="modal-body">
<p>Enter your pre-purchased coupon code in the area below.</p>
<%= form_tag('/packages/coupon', id: 'coupon_form', remote: true) do %>
<%= text_field_tag 'coupon_code', nil, placeholder: 'Coupon Code' %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<%= submit_tag "Submit Code", class: "btn btn-success" %>
</div>
<% end %>
</div>
</div>
</div>
Контроллеры/packages_controller.rb
# Route for using a coupon code
def coupon
device = Device.where(identifier: params[:coupon_code]).first
if !device.nil? && device.is_provisioned
# TODO: Route to new route that just adds customer to stripe
redirect_to controller: 'packages', action: 'coupon'
else
# TODO: Back to pacakge page letting them know the coupon is invalid.
puts false
end
end
просмотров/пакеты/coupon.html.erb
<div class="row login-container column-seperation">
<div class="col-md-6 col-md-offset-3">
<h2 class="text-center">You're almost done! You've already paid for the service, so we just need to collect your payment information for future purchases.</h2>
<br/>
<div class="row">
<div align="center" class="col-md-12">
<%= render 'coupon_form' %>
</div>
</div>
</div>
</div>
конфигурации/routes.rb
match '/packages/coupon', to: 'packages#coupon', via: [:post, :get]
Могу ли я увидеть ваш 'package_controller'? Вы называете 'JS'. Его 'JavaScript', посмотрите на консоль' Processing by PackagesController # coupon as JS'. JS не будет перенаправлять, тогда вам придется сделать это ajaxing catch. или вызывается как HTML для его переадресации. – 7urkm3n
или просто удалить '<% = form_tag ('/ packages/coupon', id: 'coupon_form', remote: true) сделать%>' 'remote: true' часть для вызова в качестве HTML, то он перенаправит !!! – 7urkm3n
@ 7urkm3n какую часть вы ищете? Нет ссылки на рендеринг как json в любом месте ... вот что меня смущает. – Godzilla74