Parametry w GET? ROUTING?

Cześć wszystkim! :slight_smile: Piszę do Was z takim problemem, bowiem mam problem odnośnie paramsów, które dziwnym trafem trafiają do GET. Mój adres wygląda mniej więcej w ten sposób:

Natomiast w logach wyrzuca mi do akcji ‘new’ - choć nie wiem dlaczego:

Started GET "/kontakt?utf8=%E2%9C%93&authenticity_token=ne6DIuvsQbDNfSHL9uMqc1eKYwR52sFKT05njJAk7Ag%3D&contact%5Bname%5D=&contact%5Bemail%5D=&contact%5Bsubject%5D=&contact%5Bmessage%5D=assdadasasddasasdas&_wysihtml5_mode=1&commit=Wy%C5%9Blij+wiadomo%C5%9B%C4%87" for 127.0.0.1 at 2012-05-06 15:28:43 +0200 Processing by ContactsController#new as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"ne6DIuvsQbDNfSHL9uMqc1eKYwR52sFKT05njJAk7Ag=", "contact"=>{"name"=>"", "email"=>"", "subject"=>"", "message"=>"assdadasasddasasdas"}, "_wysihtml5_mode"=>"1", "commit"=>"Wyślij wiadomość"} Rendered contacts/new.html.haml within layouts/application (24.6ms) User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 Rendered layouts/inc/_header.html.haml (12.7ms) Rendered layouts/inc/_login_form.html.haml (6.1ms) Rendered layouts/inc/_thrust.html.haml (0.1ms) Completed 200 OK in 67ms (Views: 65.6ms | ActiveRecord: 0.5ms)
Moje routingi wyglądają w ten sposób:

➜ app git:(bangeusz-dev) ✗ CONTROLLER=contacts rake routes contacts GET /contacts(.:format) contacts#index POST /contacts(.:format) contacts#create new_contact GET /contacts/new(.:format) contacts#new edit_contact GET /contacts/:id/edit(.:format) contacts#edit contact GET /contacts/:id(.:format) contacts#show PUT /contacts/:id(.:format) contacts#update DELETE /contacts/:id(.:format) contacts#destroy contact /kontakt(.:format) contacts#new
Form wygląda tak:

= form_for @contact do |f|

A kontroler tak:

[code]# encoding: utf-8
class ContactsController < ApplicationController

def new
@contact = Contact.new
end

def create
@contact = Contact.new(params[:contact])
if @contact.save
redirect_to root_path, :notice => “Zgłoszenie zostało wysłane.”
else
render :action => ‘new’
end
end

end[/code]
Generalnie powinno to wyglądać w ten sposób, że z forma lecimy do akcji create poprzez POST i dzieje się to, co tam mam w akcji, nie mam pojęcia z jakiej racji wyrzuca mi całość do GET oraz wykonuje akcje ‘new’.

Jakieś pomysły? :slight_smile:

   contact        /kontakt(.:format)           contacts#new

To wygląd dość podejrzanie.

[quote=apohllo] contact /kontakt(.:format) contacts#new
To wygląd dość podejrzanie.[/quote]
To jest zwykły match dla polskiego nazewnictwa, jednak moim zdaniem on nie gra kluczowej roli tutaj bowiem, gdy go usunę i wejdę przez zwykły resources /contacts/ - efekt jest ten sam, że hash z parametrami wrzucany jest do adresu.

Spójrz jaki jest atrybut method w wygenerowanym formularzu w kodzie HTML. Moze gdzieś nadpisujesz form_for i ma :method => :get w domyślnych parametrach.

[quote=Bangeusz][quote=apohllo] contact /kontakt(.:format) contacts#new
To wygląd dość podejrzanie.[/quote]
To jest zwykły match dla polskiego nazewnictwa, jednak moim zdaniem on nie gra kluczowej roli tutaj bowiem, gdy go usunę i wejdę przez zwykły resources /contacts/ - efekt jest ten sam, że hash z parametrami wrzucany jest do adresu.[/quote]
Ale to jest reguła match-all a nie get. Poza tym upewnij się, że przeładowujesz ten formularz po zmianach w routes.

W tym rzecz, że nie. Generalnie dodawałem :method => :post i dalej wyrzuca mnie do akcji ‘new’ - strona co prawda się przeładowywuje, jednak po przeładowywaniu nadal mam GET w adresie. Nie mam pojęcia w czym może tkwić problem.

Może to http://stackoverflow.com/questions/8098491/rails-form-issuing-get-request-instead-of-post-request ?

No nie! Problem rozwiązany. Problem tkwił w tym, że form siedział w formie. Wszystko przez HAMLa, nie zorientowałem się wcześniej, bo wizualnie ciężko było się dopatrzeć błędu. W takim razie dzięki śliczne pomoc :slight_smile: Miałem coś takiego

%form

i przez takie coś zmarnowałem tyle czasu. Z resztą… nieważne :slight_smile: Dzięki! :slight_smile: