我有一个由用户 A 填写的表单。如果 userA 说他们将付款,那么我希望在表单中(在提交表单之前)在 userA 选择他们将付款的下拉菜单旁边出现一个收费按钮(我猜是 JavaScript?)。此外,如果付款费用未完成,则表格本身将不会提交。如果下拉菜单设置为 userB will pay(其他用户类型),则表单将提交。
我不确定我可以用什么来做到这一点,我认为是 javascript,但我知道 ruby 没有太多 javascript。此外,费用必须从表格上的第二个下拉菜单中获取费用金额。因此,收费按钮需要从预先提交的表格中提取该金额。再次让我意识到这可以通过 javascript 来完成。
我的条纹按钮有 JavaScript,但需要一些代码才能在选择下拉列表时显示该按钮,并从表单中的其他下拉列表中提取金额。
以下是实际流程的示例:
提交表单 -> 检查属性:x -> 如果属性 X 为假,则创建记录 || Elsif Attr True -> 从 Attrs 获取付款金额:Y,渲染付款 View 显示 Attrs Y 作为应付金额 -> 提交付款表单 -> 成功收费 -> 创建原始记录
最佳答案
如果您需要在应用程序中进行授权,则不应依赖 JavaScript。用户可以轻松规避此问题。
我认为您的想法有点错误 - 您不会在同一个浏览器 session 中拥有两个用户,也不会让某人打开浏览器窗口坐着等待,直到主管批准他们的请求。这不是分时时代。
相反,您可以让非特权用户在提交表单时创建一个 PurchaseRequest
。主管将收到通知并可以批准或取消购买请求。
在这种情况下,您是否希望球回滚到用户 1 取决于具体的用例,但根据我的经验,主管通常是持有公司卡的人。
当使用 stripe 或任何其他支付系统时,您提交付款,然后收到一个回调请求,告诉您付款是否成功。
- Joe 提交表单以创建请求
- Jane(主管)出去打高尔夫球,并在 3 天后批准了。
- Joe 收到一条通知,表明他现在可以支付请求。他点击支付按钮,请求就会转发到支付门户。
- 他提交付款,然后重定向回您的应用。在此操作中,您需要检查付款状态并相应地呈现 View 。
这是一个通用示例,您应该查看 Stripe 文档以了解他们推荐的流程。
关于javascript - 如何在提交表格之前以 Rails 表格进行条纹收费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249816/