我正处于一个合乎逻辑的“岔路口”,用户可以选择我的服务付款计划或使用他们预先购买的“优惠券代码”。我有选择“付款计划”工作的功能,现在我正在研究另一个叉子,但我觉得我错了。我最终复制并调整了“付款计划”功能,并包含coupon_code
...所以,如果他们选择使用优惠券以及单独的视图和控制器方法,我会有一条单独的路线。
最后,我需要为将来的付款创建一个“客户”,而不是我创建“客户”并立即收取费用的功能,因此需要在路上使用叉子(我想)。
当然,我可以解决这个问题,所以如果有更好的方法,请告诉我。
这是我试图获得优惠券代码的工作,但是,它不会重定向到新视图,即使日志说它是,“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)
视图/包/ index.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]
答案 0 :(得分:0)
如果要异步调用,可以使用
remote: true
<%= form_tag('/packages/coupon', id: 'coupon_form', remote: true) do %>
要获取它,请在 / packages 文件夹 /create.js.erb 文件中创建文件。
console.log("<%= j render @package %>");
检查浏览器控制台以查看提取的数据。
$('nav').after("<div class='alert alert-success'> Package Successfully Added </div>");
$('#packages').append("<%= j render @package %>");