2009-10-12 12 views
10

Działa to wielkie:Szyny: przekazywanie wielu parametrów do adresu form_for?

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

Zwraca /users/(id)?type=type

Ale w innym świetle muszę zdać dwa parametry w adresie URL, a to nie działa:

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

Returns /users/(id)?this=currently_editing

Próbowałem również:

- form_for @user, :url => { :action => :update, :params = params.merge({:this => @currently_editing, :type = @type})} do |f| ... 

... bez powodzenia (błąd: dozwolone są tylko żądania GET).

Co chcę jest na to, aby wrócić w tym: /users/(id)?this=currently_editing&type=type

myśli?

Odpowiedz

25

Dlaczego należy przekazywać je do ciągu URL? Dlaczego po prostu nie dodać ich jako ukrytych pól w formularzu? W prawie wszystkich przypadkach należy przekazywać zmienne w ten sposób za pomocą POST.

+0

Czy ukryte pola działają dla parametrów, które nie są częścią modelu postu? – Blake

+0

Możesz nadal dodawać ukryte pola do formularza, nie musisz używać form_for helpers dla niego. – scottd

-3

Chyba trzeba przenieść żądany querystring atrybuty poza Opcja: url tak:

form_for @user, :url => { :action => :update }, :type => @type, :this => @currently_editing do |f| 
+0

Nie. Nie działa w ten sposób. – Jim

+3

Dobrze ... to nie działa tak. – rswolff

1

chciałbym używać ukrytych pól, ale to powinno działać:

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

:method => :put wyzwalaczy akcja aktualizacji podczas korzystania z tras RESTful.

0

spróbuj tego

możesz przekazać więcej niż jeden parametr w ten sposób.

- form_for @user, :url => xxx_yyy_path(:param1 => value1, :params2 => value2, ......) do |f| ... 
Powiązane problemy