Forum: Rails-ES Definiendo una acción PUT

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B7de309e2f3436b5b1c0b5c18dad089d?d=identicon&s=25 Carlos Belizón Ibañez (paliyoes)
on 2009-04-27 20:18
Estoy modificando mi fichero de rutas para mi aplicación, hay una acción
que hace lo siguiente:

def replace
    begin
      @player1 = Player.find(params[:replacement][:player1])
      @player2 = Player.find(params[:replacement][:player2])
      @player1.replace_by(@player2)
    rescue
      flash[:notice] = "You must select 2 players to make a substition"
    end
    respond_to do |format|
      format.html {redirect_to team_club_path}
      format.xml {render :xml => [@player1, @player2]}
    end
end

En la vista se hace básicamente esto (me he saltado todos los campos que
no son del formulario realmente):

<% form_for :replace, :url => replace_club_path(@club) do |f| %>
   <%= radio_button("replacement", "player1", player.id) %></td>
   <%= radio_button("replacement", "player2", player.id) %></td>
<%= f.submit 'Replace' %>
<% end %>

Para mí, esa acción se correspondería más con el verbo put ya que se
hace una modificación sobre el estado de mi servidor (no se crea un
recurso nuevo).

Sin embargo si lo defino de esa forma, cuando pulso el botón submit me
sale lo siguiente:

Unknown action

No action responded to 1. Actions: create, destroy, edit, index, new,
replace, show, team, and update

Sin embargo si la defino como post funciona perfectamente ¿A qué es
debido esto?
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2009-04-27 20:30
(Received via mailing list)
Que tienes en el archivo de rutas??

2009/4/27 Carlos Belizón <ruby-forum-incoming@andreas-s.net>
B7de309e2f3436b5b1c0b5c18dad089d?d=identicon&s=25 Carlos Belizón Ibañez (paliyoes)
on 2009-04-27 21:01
Emili Parreño wrote:
> Que tienes en el archivo de rutas??
>
> 2009/4/27 Carlos Belizón <ruby-forum-incoming@andreas-s.net>

map.resources :rounds
map.resources :seasons
map.resources :leagues
map.resources :match_generals
map.resources :users
map.resource :user_session
map.resources :clubs, :member => {:team => :get, :replace => :post}
map.resources :players
map.home '', :controller => "home", :action => "index"

Así funciona, si cambio a:

map.resources :clubs, :member => {:team => :get, :replace => :put}

Da el error de antes.
0e34c56054c414263e933a1b8b3d0d55?d=identicon&s=25 Ruben Davila (rdavila)
on 2009-04-27 22:29
(Received via mailing list)
Si cambias esta linea:

<% form_for :replace, :url => replace_club_path(@club), :html =>
{:method =>
:put} do |f| %>

anda?
B7de309e2f3436b5b1c0b5c18dad089d?d=identicon&s=25 Carlos Belizón Ibañez (paliyoes)
on 2009-04-28 17:00
Ruben Davila wrote:
> Si cambias esta linea:
>
> <% form_for :replace, :url => replace_club_path(@club), :html =>
> {:method =>
> :put} do |f| %>
>
> anda?

Si cambio eso y en mi fichero de rutas la acción replace es de tipo
:put, me sale el siguiente error:

wrong number of arguments (0 for 1)
B7de309e2f3436b5b1c0b5c18dad089d?d=identicon&s=25 Carlos Belizón Ibañez (paliyoes)
on 2009-04-28 17:08
Carlos Belizón wrote:
> Ruben Davila wrote:
>> Si cambias esta linea:
>>
>> <% form_for :replace, :url => replace_club_path(@club), :html =>
>> {:method =>
>> :put} do |f| %>
>>
>> anda?
>
> Si cambio eso y en mi fichero de rutas la acción replace es de tipo
> :put, me sale el siguiente error:
>
> wrong number of arguments (0 for 1)

Eyy, perdona sí que funciona como has dicho, el error era de otra
modificación que hice, ¿Sabrías decirme por qué funciona ahora?

Gracias
Cdb09f77ecd371f212b3e517db22efac?d=identicon&s=25 Jordi Villar Alvarez (Guest)
on 2009-04-28 17:12
(Received via mailing list)
Si no me equivoco es porque con ese cambio estás indicando que el
método a usar es PUT, por defecto el helper pondrá un POST.

El 28/04/2009, a las 17:08, Carlos
Belizón escribió:
> Carlos Belizón wrote:
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2009-04-28 17:19
(Received via mailing list)
2009/4/28 Carlos Belizón <ruby-forum-incoming@andreas-s.net>

>
> Eyy, perdona sí que funciona como has dicho, el error era de otra
> modificación que hice, ¿Sabrías decirme por qué funciona ahora?
>
>
Rails simula los verbos PUT y DELETE mediante un campo oculto en el
formulario, que es lo que consigues con :html => {:method => :put},
compruébalo en la fuente. Sin ese campo oculto, Rails se toma esa
peticion
como lo que es, un POST normal y corriente.
This topic is locked and can not be replied to.