2010-02-02 12 views
8

Czy istnieje sposób przechwycenia zapytania i wysłania go w ramach formularza? Używam Rails 2.3.5, a mój użytkownik znajduje się na stronie z wieloma parametrami zapytania. Na tej stronie zamierzają przesłać formularz. Wewnątrz akcji, która otrzymuje pocztę, chcę wiedzieć, jakie były te parametry zapytania. Oczywiście nie są one wysyłane jako część postu. Potrzebuję więc rzeczywistych wartości formularza oraz parametrów zapytania, które znajdowały się na stronie, gdy użytkownik przesłał formularz.Wysyłaj parserię znaków jako część formularza

Jestem pewien, że mógłbym napisać paskudny skrypt javascript, który wprowadziłby paramerty do ukrytych pól w formularzu, aby były dostępne, ale wydaje się to brzydkie. Mój Googling nie pojawił się zbyt wiele, co sprawia, że ​​zastanawiam się, czy po prostu źle to rozumiem. Co gorsza, jestem początkującym Railsiem.

Doceń wszelkie wskazówki i pomysły, aby skłonić mnie do działania we właściwym kierunku.

Odpowiedz

9

Mój znajomy pokazał mi, co uważam, że jest prostszy sposób:

<% form_tag params.merge(:action=>"someAction") do %> 

Scalanie params do mieszania niezbędnych do podejmowania form_tag załatwiło sprawę doskonale.

+0

Tak, to jest lepsze, ponieważ tak naprawdę tworzy URL querystring – jpwynn

+0

Uwaga: przeglądarki ignorują ciągi zapytań dla żądań GET, w takim przypadku będziesz musiał utworzyć ukryte pola dla każdego wejścia. – fny

+3

Aby wyjaśnić wypowiedź @faraz: przeglądarki ignorują ciągi zapytania w ** adresie ** dla formularzy, które przesyłają za pomocą metody GET –

5

Preferowanym sposobem byłoby użycie ukrytych pól. Nie próbowałem go, ale myślę, że możesz określić dodatkowe parametry ciągu zapytania wewnątrz pomocników *_path lub *_url. Coś jak:

<% form_for(@post, 
      :url => post_path(@post, :foo => 'foo', :bar => 'bar')) do |f| %> 
    ... 
<% end %> 
+0

, co będzie robić, jeśli będę chciał to wykorzystać na formularzu udostępnionym do edycji i tworzenia działań? – Stiig

0
<% form_tag params.merge(:action=>"someAction") do %> 

- Brak dopasowania route [POST]

Powiązane problemy