Rails: измените URL в представлении и обновите это новое значение - PullRequest
2 голосов
/ 21 марта 2012

Я имею дело с URL этого стиля:

http://mysite/tables/134/X/Y
http://mysite/tables/134/X/Z

Число 134 распознается как : table_id в соответствующих контроллерах. Я хотел бы иметь возможность (из представления) изменить : table_id и вызвать тот же URL. Итак, что-то вроде:

http://mysite/tables/135/X/Y

Я пытался сделать это так:

<%= collection_select("params", :table_id, @tables , :id, :id, {:prompt => true}, :onchange => "location.href = ''") %>

Но параметры [: table_id], которые я получаю в контроллере, остаются теми же, что были в URL. Итак, мой вопрос:

Нужно ли самому создавать URL? Разве я не могу просто изменить params [: table_id] и перезагрузить тот же URL?

1 Ответ

1 голос
/ 21 марта 2012

Краткий ответ: Да, вам нужно создать URL.

Причина: переменная params[:table_id] берется из URL. Я уверен, что вы видели URL веб-сайта вида http://www.foo.com/?var=baz. Если вы сделаете это в Rails, он установит для params [: var] значение baz. Это в основном то, что происходит здесь с table_id.

Основным принципом REST является то, что транзакции HTTP не сохраняют состояния. (Файлы cookie и хранилище сеансов являются исключением, но здесь это не имеет значения.)

...