Как наиболее легко пересылать параметры через помощника по маршруту? - PullRequest
2 голосов
/ 13 мая 2011

Это, очевидно, не работает:

redirect_to post_path(@post, :params => params)

Так как помощники по маршрутам Rails не позволяют вам напрямую устанавливать хэш параметров (из того, что я читал).

Это может создать некоторые проблемы:

redirect_to post_path(@post, params)

Так как вы будете перенаправлять также параметры: controller и: action, которые приведут вас к тому же контроллеру и действию, из которого вы пришли.Часто это не то, что вам нужно.

Это работает, но недостаточно, поскольку оно громоздко, поскольку для установки всех параметров (кроме: action и: controller) на существующие параметры требуется много кода.:

redirect_to post_path(@post, {:someparameter => params[:someparameter]})

Итак, какой самый простой и легкий способ?

1 Ответ

9 голосов
/ 13 мая 2011

Вы можете легко переслать все параметры, кроме тех, которые вы хотите исключить, например:

redirect_to post_path(@post, params.to_hash.except(:controller, :action))

Но это, вероятно, оставит вас с возможностью отправки через: authenticity_token,: _method и другие параметры, такие как: id, если у вас есть вложенный ресурс, который вам может не понадобиться.

Поэтому кажется, что это самый простой способ, для большинства целей это:

redirect_to post_path(@post, params.to_hash.slice(:someparameter, :anotheparameteryouwant))

Это позволяет вам просто указать параметры, через которые вы хотите отправить (исключая остальные), без большого количества кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...