Rails: передача нескольких параметров в form_for URL? - PullRequest
10 голосов
/ 12 октября 2009

Это прекрасно работает:

- form_for @user, :url => { :action => :create, :type => @type } do |f| ...

Возвращает /users/(id)?type=type

Но в другом представлении мне нужно передать два параметра в строку 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

Мысли?

Ответы [ 4 ]

26 голосов
/ 12 октября 2009

Зачем вам нужно передавать их в строку URL? Почему бы просто не добавить их как скрытые поля в форме? Почти во всех случаях вы должны передавать переменные таким образом с помощью POST.

1 голос
/ 13 октября 2009

Я бы использовал скрытые поля, но это должно работать:

<% form_for @user, :url => user_path(@user.id, :type => @type, :this => @currently_editing), :method => :put do |f| -%>

:method => :put запускает действие обновления при использовании RESTful маршрутов.

0 голосов
/ 17 марта 2014

пожалуйста попробуйте это

таким образом вы можете передать более одного параметра.

- form_for @user, :url => xxx_yyy_path(:param1 => value1, :params2 => value2, ......) do |f| ...
0 голосов
/ 12 октября 2009

Я думаю, вам нужно переместить нужные атрибуты строки запроса за пределы параметра: url, например так:

form_for @user, :url => { :action => :update }, :type => @type, :this => @currently_editing do |f|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...