I thought request.method
is supposed to return a symbol like :get
, :put
etc. ?
But instead in the controller action, I am getting GET
as a String!
Am I doing something wrong?
In routes.rb
:
resources :posts
member do
get 'some_action'
end
end
In a view .erb:
<%= link_to "Some Action",some_action_post_path %>
In 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. I'm using Rails 3.0.3 on Ruby 1.8.7 p330
Works as designed - it is supposed to return a string :) So, use the string. Different topic: you can convert between strings and syms with to_s and to_sym, respectively.
For anyone coming at this question while converting from Rails 2.x, it's worth noting that the request.method call used to return symbols.
Old question, but we also have these now:
http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-method_symbol http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-request_method_symbol
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With