Al exponer un controlador como un recurso, se añaden automáticamente siguientes acciones:
show
index
new
create
edit
update
destroy
Estas acciones se pueden clasificar en dos grupos:
La URL para la acción de miembro tiene la identificación del recurso de destino. MI.g:
users/1/edit
users/1
que se pueda imaginar :member
acción como un método de instancia en una clase. Siempre se aplica en un recurso existente.
acciones miembro predeterminado: show
, edit
, update
, destroy
En el URL de la acción :collection
no contiene el identificador del recurso de destino. Por ejemplo:
users/login
users/register
que se pueda imaginar :collection
acción como un método estático en una clase.
acciones de cobro por defecto: index
, new
, create
En su caso se necesitan dos nuevas acciones para el registro. Estas acciones pertenecen a: tipo de recopilación (ya que no tiene el id. Del usuario al enviar estas acciones). La ruta puede ser el siguiente:
map.resources :users, :collection => { :signup => :get, :register => :post }
La dirección URL de las acciones son las siguientes:
users/signup
users/register
Si desea eliminar una acción estándar generada por los carriles usar: excepto /: únicas opciones:
map.resources :foo, :only => :show
map.resources :foo, :except => [:destroy, :show]
Editar 1
lo general t Repita la acción confirmation
como una acción :member
. En este caso, params[id]
contendrá el código de confirmación.
configuración Ruta:
map.resources :users, :member => { :confirm => :get}
URL
/users/xab3454a/confirm
confirm_user_path(:id => @user.confirmation_code) # returns the URL above
Controller
class UsersController < ApplicationController
def confirm
# assuming you have an attribute called `confirmation_code` in `users` table
# and you have added a uniq index on the column!!
if User.find_by_confirmation_code(params[id])
# success
else
# error
end
end
end
@KandadaBoggu, esta explicación se ve genial. Como seguimiento para verificar mi comprensión, digamos que quería enviar un enlace de "confirmación de la cuenta" en el correo electrónico de bienvenida del usuario. Ese enlace contendría un hash de validación de 8 caracteres. ¿Añadiría 'map.resources: users,: member => {: validate =>: get}'? ¿Cómo se conecta el 'hash' param? –
Actualicé mi respuesta, eche un vistazo. –
¿Qué significa que 'confirm_user_path' use' @ user.confirmation_code' en lugar del comodín ': id' en lugar de' @ user.foo' o '@ user.bar'? ¿Debería ser 'confirm_user_path (: id => @ user.confirmation_code)'? –