Rails - passage de paramètres dans un redirect_to - session est le seul moyen?

J'ai un contrôleur de jeu comme la racine de mon application. Qu'il accepte un paramètre appelé uid et vérifie si l'utilisateur existe. Si non, je le veux pour rediriger vers la page nouvel utilisateur et de pré-remplir le champ uid avec l'uid dans le paramètre.

Dans mon root_controller:

def index
  if params[:uid]
    @user = User.find_by_uid(params[:uid])
    if (!@user.blank?)
      # do some stuff
    else
      session[:user_id] = params[:uid]
      redirect_to(new_user_path, :notice => 'Please register as a new user')
    end
  else
    # error handling
  end
end

Dans mon users_controller, GET /users/nouvelle action:

def new
  @user = User.new
  @user.uid = session[:user_id]
  # standard respond_to stuff here
end

Tout cela fonctionne très bien, mais est-ce une façon acceptable pour ce faire? J'ai d'abord essayé de passage du uide dans le rediriger déclaration, comme:

redirect_to(new_user_path, :notice => 'Please register as a new user', :uid => params[:uid])

ou même de le tester avec:

redirect_to(new_user_path, :notice => 'Please register as a new user', :uid => 'ABCD')

mais ni semblait passer la valeur à users_controller...je ne pouvais pas accéder à l'aide params[:uid] à partir de ce contrôleur.

Session est un bon endroit pour stocker des trucs comme ça, ou est-il une meilleure façon de passer via la redirection? Merci!

InformationsquelleAutor Jim | 2011-04-08