2011-03-02 20 views
7

Pensé que request.method se supone que debe devolver un símbolo como :get, :put etc.? Pero, en cambio, en la acción del controlador, obtengo GET como una cadena.¿Por qué `request.method` devuelve una cadena (en lugar de un símbolo)?

¿Estoy haciendo algo mal?

En routes.rb:

resources :posts 
    member do 
    get 'some_action' 
    end 
end 

En una vista .erb:

<%= link_to "Some Action",some_action_post_path %> 

En PostsController:

def some_action 
    p request.method    # => "GET" 
    p request.method.class.name # => "String" 
    if request.method == :get 
    #does not get called 
    end 
end 

Ps. Estoy usando Rails 3.0.3 en Ruby 1.8.7 p330

Respuesta

10

Funciona como se diseñó - se supone que devuelve una cadena :) Por lo tanto, utilice la cadena. Tema diferente: puede convertir cadenas y símbolos con to_s y to_sym, respectivamente.

+0

que estaba mirando la documentación equivocada :) – Zabba

9

Para cualquiera que tenga esta pregunta al convertir Rails 2.x, vale la pena señalar que la llamada request.method solía devolver símbolos.

Cuestiones relacionadas