使用rails控制器生成器使用post方法生成路由

时间:2014-09-03 18:01:27

标签: ruby-on-rails-4 controllers http-method

在rails 4中生成控制器时,是否可以指定操作方法?我不想使用get方法生成所有路由。 以下是

的例子
rails g controller sessions new signin

将生成路线

get 'sessions/new'
get 'sessions/signin'

但我希望登录操作为POST操作

post 'sessions/signin'

可以用发生器吗?

1 个答案:

答案 0 :(得分:2)

据我所知,Rails代码中没有任何内容可以实现您所请求的功能。

controller_generator.rb实现命令行的控制器生成器。 生成路由的代码非常短,并且不包含您请求的任何内容:

    # This method creates nested route entry for namespaced resources.
    # For eg. rails g controller foo/bar/baz index
    # Will generate -
    # namespace :foo do
    #   namespace :bar do
    #     get 'baz/index'
    #   end
    # end
    def generate_routing_code(action)
      depth = regular_class_path.length
      # Create 'namespace' ladder
      # namespace :foo do
      #   namespace :bar do
      namespace_ladder = regular_class_path.each_with_index.map do |ns, i|
        indent("namespace :#{ns} do\n", i * 2)
      end.join

      # Create route
      #     get 'baz/index'
      route = indent(%{get '#{file_name}/#{action}'\n}, depth * 2)

      # Create `end` ladder
      #   end
      # end
      end_ladder = (1..depth).reverse_each.map do |i|
        indent("end\n", i * 2)
      end.join

      # Combine the 3 parts to generate complete route entry
      namespace_ladder + route + end_ladder
    end

基本上它只是为每个传递的操作创建一个get路由,并且不再提供任何功能。

无论哪种方式,您都可以在创建控制器后手动更改routes.rb