Post Redirect在Rails中获取模式

kaz*_*hid 6 ruby ruby-on-rails

如何在Rails中实现PRG?

我在Rails中使用了PRG,但我并不完全相信它是正确的.我想知道在Rails中有没有更好的方法来处理它?

Adi*_*ghi 5

我不知道PRG模式有多受欢迎,以及为什么人们必须虔诚地坚持"重定向"它的失败方面(实际上,有一个很好的理由有时你不想处理创建失败时的"设置"复杂性和保持干燥).

你基本上需要的是将params转换为:user到new.我认为@ Hitesh的解决方案非常接近.

class UsersController < ApplicationController

  def new
    if flash[:user_params]
      @user = User.new(flash[:user_params])
      @user.valid?
    else
      @user = User.new
    end
  end

  def create
    @user = User.new(params[:user])

    if @user.save
      # clears previously stored user if there is any
      flash[:notice] = "User created."
      redirect_to '/'
    else
      flash[:error] = "Error saving User"
      flash[:user_params] = params[:user]
      redirect_to :action => :new
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 为什么一个人必须在失败时虔诚地坚持"重定向" - 因为没有PRG,后退按钮和刷新按钮就会停止按用户期望的方式工作......这会让用户体验变得丑陋,因此坚持使用PRG就可以了流动很好. (2认同)