Я бы сказал, лучший способ - создать отдельные действия в контроллере и указать их в маршрутах.
# config/routes.rb
...
get '/my_action' => 'my#my_action_get'
post '/my_action' => 'my#my_action_post'
...
# app/controllers/my_controller.rb
...
def my_action_get
# do stuff like listing smth
end
def my_action_post
# do other stuff
end
Фактически, Rails по умолчанию использует ту же логику: index
иДействия create
вызываются запросами, отправляемыми по одним и тем же путям (например, /articles
), однако они имеют разные методы запроса: GET /articles
запрос перенаправляется на действие index
и перечисляет все статьи, а POST /articles
перенаправляется на действие create
и создает новую статью.