El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

añadir verbo a un scaffold

| Comments

Cualquiera que sepa como usar debidamente los scaffolds, o sea, cualquiera que sepa como hacerle la paja a ruby on rails para que haga lo que queremos; seguro habrá intentado en algún momento, añadir un nuevo método a un scaffold. Además, de seguro quisiste luego poder llamarlo con los métodos “metodo_user_path” y que la ruta se cree de manera automática.

Por ejemplo, en este caso, tengo el scaffold user y le agregué el método cambiar aparte de los clásicos PUT y DELETE.

“scope de users_controller.rb”
1
2
3
4
5
6
7
8
9
10
11
  # cambia el estado de habilitación del usuarios
  def cambiar
     @user.enabled=!@user.enabled
     @user.save
     redirect_to :back
  end

  # GET /users
  def index
    @users = User.all
  end

Pero el método cambiar no aparece en rails hasta que no hagas lo siguiente en el fichero de las rutas.

“config/routes.rb”
1
2
3
4
5
6
7
8
9
10
11
   # el scaffold de los usuarios
   resources :users do

      # agregamos el verbo cambiar usado para
      # @user.enabled=!@user.enabled
      # para que exista: cambiar_user_path
      member do
         get 'cambiar'
      end

   end

Ahora existirá el método cambiar_user_path que toma como argumento el usuario.

cambiar_user_path(user)

De esta manera, se le manda el objeto usuario y genera una URL como

/users/345/cambiar

Dicha ruta macheará el método User#cambiar

Si este artículo te resultó interesante, considere donar 0.03 BTC: 1Kg4gu3e7u8HUw8bj5NbBciRg6Y56kuFCU

Comments