Ответ 1
Зачем вам передавать их в строку URL? Почему бы просто не добавить их как скрытые поля в форме? Почти во всех случаях вы должны передавать переменные таким образом с помощью POST.
Это отлично работает:
- form_for @user, :url => { :action => :create, :type => @type } do |f| ...
Возвращает /users/(id)?type=type
Но в другом представлении мне нужно передать TWO-параметры в строку URL, и это не сработает:
- form_for @user, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ...
Возвращает /users/(id)?this=currently_editing
Я также пробовал:
- form_for @user, :url => { :action => :update, :params = params.merge({:this => @currently_editing, :type = @type})} do |f| ...
... без везения (ошибка: разрешены только запросы GET).
Я хочу, чтобы он возвращал это: /users/(id)?this=currently_editing&type=type
Мысли?
Зачем вам передавать их в строку URL? Почему бы просто не добавить их как скрытые поля в форме? Почти во всех случаях вы должны передавать переменные таким образом с помощью POST.
Я бы использовал скрытые поля, но это должно работать:
<% form_for @user, :url => user_path(@user.id, :type => @type, :this => @currently_editing), :method => :put do |f| -%>
:method => :put
запускает действие обновления при использовании маршрутов RESTful.
попробуйте это
вы можете передать более одного параметра таким образом.
- form_for @user, :url => xxx_yyy_path(:param1 => value1, :params2 => value2, ......) do |f| ...
Я думаю, вам нужно переместить нужные атрибуты запроса за пределами параметра: url, например:
form_for @user, :url => { :action => :update }, :type => @type, :this => @currently_editing do |f|