Ruby on rails 我如何检测它';是从新提交还是编辑提交?

Ruby on rails 我如何检测它';是从新提交还是编辑提交?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,如果验证码正确,则在更新或创建记录之前,此before_筛选器将进行验证。 当它不正确时,它会将我带回到上一页,但所有的输入数据都将消失。。。。 如何保留上一页键入的输入数据 我想使用before_过滤器并应用这两个操作“更新”和“创建”。 它应该检测提交来自何处,并切换重新呈现“新建”或“编辑”的位置 before_filter :simple_captcha_check, :only => [:update, :create] def simple_captcha_check

如果验证码正确,则在更新或创建记录之前,此before_筛选器将进行验证。
当它不正确时,它会将我带回到上一页,但所有的输入数据都将消失。。。。 如何保留上一页键入的输入数据

我想使用before_过滤器并应用这两个操作“更新”和“创建”。 它应该检测提交来自何处,并切换重新呈现“新建”或“编辑”的位置

before_filter :simple_captcha_check, :only => [:update, :create] 

def simple_captcha_check
    if !simple_captcha_valid?
        flash[:error] = 'Wrong Captcha!'
        redirect_to :back
    end
end

假设您正在创建/更新
用户
模型,您的代码可能如下所示:

def simple_captcha_check
  if !simple_captcha_valid?
    flash[:error] = 'Wrong Captcha!'

    if request.put? # We came from an edit request
      @user = User.find(params[:id])
      @user.attributes = params[:user]
      render :action => :edit
    elsif request.post? # We came from a new request
      @user = User.new params[:user]
      render :action => :new
    end
  end
end

因为它已经起作用了,但是为了获得良好的实践效果,您应该对记录映射使用标准操作,例如,def update(带put)用于记录更新,def create(带post)用于新记录创建。这将简化代码并消除条件语句。