2010-01-30 9 views
8

Ich habe ein ror Problem mit dem Link_to gelaufen. Warum verwendet mein Link zur Verwendung der GET-Methode und meiner button_die POST-Methode, nachdem ich in den link_to-Parametern meine "Methode" => "post" angegeben habe?Button_to verwendet POST Link_to verwendet GET, warum? ROR

Ausblick:

<%= button_to "pdf", :action => 'getquote' %> 
<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote', :method => :post } %> 

Controller-Methode:

def getquote 
@cart = find_cart 
respond_to do |format| 
format.pdf 
end 
end 

Terminal-Ausgang (Button/Link, respectively):

Processing InventoriesController#getquote (for 127.0.0.1 at 2010-01-30 01:38:02) [POST] 
    Parameters: {"action"=>"getquote", "authenticity_token"=>"D2cwnHyTHgomdUM3wXBBXlOe4NQLmv1Srn0paLbExpQ=", "controller"=>"inventories"} 

Processing InventoriesController#show (for 127.0.0.1 at 2010-01-30 01:39:07) [GET] 
    Parameters: {"method"=>"post", "action"=>"show", "id"=>"getquote", "controller"=>"inventories"} 

Antwort

11

Ich denke, Ihre HTML-Optionen in einem separaten Hash sein müssen aus Ihrer URL Optionen:

<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote'}, {:method => :post } %> 

Ich sah überall für ein gutes Beispiel, ohne Glück. Für meinen Code, habe ich meistens aufgegeben und nutzen nur den neuen Stil: nur

<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %> 
+0

Ich habe das gleiche Problem mit ROR 3.0.17 (oder 18, oder 19, erinnere mich nicht). Ich habe das Markup wie diesen "neuen Stil" gemacht, es funktioniert auf den meisten Seiten mit Ausnahme einer bestimmten Seite. Der Anruf ist genau dasselbe, ich weiß nicht, was los ist. Auch Firebug zeigt, dass der Link 2 Datenparameter hat: Datenbestätigung und Datenmethode. Soll das richtig sein? –

1

Eine Möglichkeit ist, dass Sie haben Javascript deaktiviert, in In diesem Fall wird es auf ein GET zurückfallen.

+1

Javascript aktiviert ist. –

6

könnte für jemanden nützlich sein, die :)

standardmäßig besucht, führt button_to Aktion POST.

zu tun, eine GET die Syntax zu machen, ist wie folgt:

<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %> 
+1

Funktioniert, aber nur, wenn Sie ': get 'als Symbol oder Kleinbuchstaben' "get" 'übergeben. String '" GET "' funktioniert nicht. Nur ein kleines Gotcha. – Gunchars

+3

Wenn ich dies tue, fügen Sie ein Fragezeichen "?" bis zum Ende meiner URL. Sonst jemand sieht das oder hat eine Lösung? –

+1

@TrevorMcKendrick kann dies nützlich sein http://StackOverflow.com/a/8122116/1297435 –