Генерация маршрутов методом post с использованием генератора контроллера rails

Есть ли способ указать метод для действия при генерации контроллера в рельсах 4? Я не хочу создавать все маршруты с get метод. В качестве примера следующее

rails g controller sessions new signin

сгенерирует маршруты

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

но я хочу, чтобы действие по подписке POST действие

post 'sessions/signin'

это возможно с генератором?

1 ответ

Насколько я вижу, в коде 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вручную после создания контроллера.

Другие вопросы по тегам