Form request

Witam! Mam problem dotyczący formularzy, kod źródłowy owego formularza zaczerpnąłem z dokumentacji

 <%= form_tag do %>
      <%= label_tag(:q, "Search for:") %>
      <%= text_field_tag(:q) %>
      <%= submit_tag("Search") %>
  <% end %>
  <%= params.inspect %>

W dokumentacji pisze coś takiego

Wywołany bez argumentów tworzy element formularza, którego pole “action” odwołuje się do bieżącej strony…

Po kliknięciu przekierowuje mnie do akcji create, a powinno odwoływć się do bieżącej strony.
Bardzo proszę o szybką i skuteczną pomoc :smile:

bieżąca strona metodą GET != bieżąca strona metodą POST

Czyli w jaki sposób powinienem odwołać się do bieżącej strony metody post?


method: “post”

Ale problem jest nieco inny, ponieważ nie chcę danych z formularzy używać do bazy, lecz chce zapisać je do zmiennej. W większości poradnikach formularze odwołują się do bazy, a ja chce wyniki z formularza zapisać do zmiennej. W moim kontrolerze zrobiłem coś takiego:

@password = params[:Password]

A kod formularza wygląda tak:

<%= form_for @password, method: "post" do |f| %>
    <%= f.label 'Password' %>
    <%= f.text_field 'Password' %> 
    <%= f.submit 'OK' %>
<% end %>

Ale rails sypie błędami.

To co robisz poźniej z danymi z formularza to już całkiem zależy od ciebie, nikt ci nie każe ich zapisywać do bazy.

W drugim linku masz przykłady, które rozwiązują Twój problem.

Cholera coś nie wychodzi.

 <%= form_tag method: 'post' do %>
      <%= label_tag 'password' %>
      <%= password_field_tag 'password' %>
      <%= button_tag "OK" %>
  <% end %>

Znowu odwołuje się akcji create.
PS Przesiadka z php na rails, wcale nie jest taka łatwa ;(

W pierwszym poście pod twoim pytaniem masz odpowiedź: “bieżąca strona metodą GET != bieżąca strona metodą POST”.

Potrzebujesz metody GET (wtedy zawołana zostanie akcja index).

1 Like

Wielkie dzięki wszystko chodzi :slight_smile: