轨道上的红宝石 - 如何检测它是从新提交还是从编辑提交?



此before_filter在更新或创建记录之前验证captcha是否正确。
当它是不正确的,它带我回到上一页,但所有的输入数据将消失....如何保留在前一页输入的输入数据?

我想使用before_filter并应用这两个动作'更新'和'创建'。它应该检测提交来自哪里,并切换到重新渲染'new'或'edit'的位置

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

假设您正在创建/更新一个User模型,您的代码可以看起来像这样:

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

相关内容

  • 没有找到相关文章

最新更新