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

时间:2011-03-02 17:55:09

标签: ruby-on-rails-3

我认为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

聚苯乙烯。我在Ruby 1.8.7 p330上使用Rails 3.0.3

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:9)

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

答案 2 :(得分:2)