为什么`request.method`返回一个字符串(而不是符号)?

Zab*_*bba 8 ruby-on-rails-3

我想request.method应该返回一个符号一样:get,:put等等?但是在控制器动作中,我得到的GET是一个字符串!

难道我做错了什么?

routes.rb:

resources :posts
  member do
    get 'some_action'
  end
end
Run Code Online (Sandbox Code Playgroud)

在.erb视图中:

<%= link_to "Some Action",some_action_post_path %>
Run Code Online (Sandbox Code Playgroud)

PostsController:

def some_action
  p request.method               # => "GET"
  p request.method.class.name    # => "String"
  if request.method == :get
    #does not get called
  end
end
Run Code Online (Sandbox Code Playgroud)

PS.我在Ruby 1.8.7 p330上使用Rails 3.0.3

Mör*_*rre 11

按设计工作 - 它应该返回一个字符串:)所以,使用字符串.不同的主题:您可以分别使用to_s和to_sym在字符串和syms之间进行转换.


dou*_*asr 9

对于从Rails 2.x转换时遇到此问题的任何人,值得注意的是request.method调用用于返回符号.