Почему `request.method` возвращает строку (вместо символа)? - PullRequest
8 голосов
/ 02 марта 2011

Я думал, что request.method должен возвращать символ типа :get, :put и т. Д.? Но вместо этого в действии контроллера я получаю GET в виде строки!

Я что-то не так делаю?

В routes.rb:

resources :posts
  member do
    get 'some_action'
  end
end

В представлении .erb:

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

В 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. Я использую Rails 3.0.3 на Ruby 1.8.7 p330

Ответы [ 3 ]

10 голосов
/ 02 марта 2011

Работает как задумано - предполагается вернуть строку :) Итак, используйте строку. Другая тема: вы можете конвертировать строки и символы с помощью to_s и to_sym соответственно.

9 голосов
/ 09 мая 2011

Для тех, кто задает этот вопрос при конвертации из Rails 2.x, стоит отметить, что вызов request.method использовался для возврата символов.

2 голосов
/ 29 октября 2014
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...