【问题标题】:Prevent user going back and viewing previously submitted payment form with Rails使用 Rails 防止用户返回并查看之前提交的付款表单
【发布时间】:2018-02-13 11:12:28
【问题描述】:

在将其标记为重复之前。这个答案对我不起作用:

Prevent user going back and viewing previously submitted form Rails

我想防止用户能够返回到他之前提交的付款表单。

我错过了什么?这应该是一件容易的事吗?我的错误是什么?

这是一些形式:

 <%= form_for :job, method: :post, url: {action: "create"} do |f| %>
   <div class="infogroup">
     <h5>Informationen zum Job</h5>
     <p>Was für ein Job bieten Sie?</p>
   </div>
   <div class="form-group">
      <%= label_tag(:jobtitle, "Jobtitel*") %>
      <%= text_field_tag(:jobtitle) %>
   </div>
   <div class="form-group">
     <%= label_tag(:jobtype, "Anstellungsgrad*") %>
     <%= text_field_tag(:jobtype) %>
   </div>
   <div class="form-group">
      <%= label_tag(:place, "Ort*") %>
      <%= text_field_tag(:place) %>
   </div>
[...]

这是控制器代码:

class JobsController < ApplicationController

  require 'date' 

  def new
      @job = Job.new
  end

  def create
    @job = Job.new(article_params)
    @job.save
    redirect_to @job
  end

  private def article_params

  d = Date.new();
  d.strftime('%a %d %b %Y')
    params.permit(:jobtitle, :jobdescription, :jobtype, :place, :company, :paid, :userid, d)
  end


  def show
    @job = Job.where(id: params[:id])
  end


end

【问题讨论】:

    标签: ruby-on-rails ruby forms


    【解决方案1】:

    我看到以下方法可以确保付款不会再次保存。

    1. 使用一些作业属性,并在作业创建期间检查它们并重定向到显示。
    2. 单击保存按钮时附加一个新的隐藏输入并验证参数是否存在。如果存在则重定向

      # JavaScript
      $('#the_form button').on('submit', function() {
         this.preventDefault();
         this.parent.append('<input type="hidden" name="human_hit" value="yes" />');
         this.parent.submit();
      })
      
      # Controller
      def create
        if params[:human_hit]
          redirect_to :show, alert: "Payment already done!"
        else
         # Do save logic
        end
      end
      

    【讨论】:

      【解决方案2】:

      这里你可以使用referer header。只需检查来自哪个页面的点击。

      例如:

      用户在付款表单中,前一页是用户详细信息,然后来自它的引荐来源将是用户详细信息。如果用户来的不是用户详细信息,只需将其他页面重定向到您想要的位置。

      【讨论】:

        猜你喜欢
        • 2015-08-04
        • 2012-01-30
        • 1970-01-01
        • 2017-11-17
        • 2020-04-27
        • 2016-07-18
        • 2011-11-07
        • 1970-01-01
        • 2012-12-17
        相关资源
        最近更新 更多