2012-05-02 9 views
9

ruszam projekt z szyn 3,1 do szyn 3.2.2 i mam to:Zadanie: format w link_to nie działa w szynach 3.2.2

= link_to 'CSV', :action => 'list', :search => @search, :format => 'csv' 

w Rails 3.1 to określa formatuj w linku html (format = csv) i jest przechwytywany przez respond_with, ale w 3.2.2 format nigdy nie wchodzi w link. Przejrzałem listę zatwierdzeń na github i nie znalazłem niczego, co by się z tym wiązało.

Edit:

Wygląda na to, że jest to problem z url_for

#rails 3.1 
url_for :controller=>'posts', :action=>'index', :format=>:xml 
/admin/posts/index?format=xml 

#rails 3.2.2 
url_for :controller=>'posts', :action=>'index', :format=>:xml 
/admin/posts/index 

#rails 3.2.2 
url_for :controller=>'posts', :action=>'index', :format=>:xml, :id => 5 
/admin/posts/index/5.xml 
+0

Czy kiedykolwiek się tym zajmowałeś? Doświadczam tego samego. Tylko z nazwanymi trasami mogłem zrobić coś w rodzaju '<% = link_to" coś ", coś_ścieżki (coś,: format =>: xml)%>' – slhck

+0

Tak, skończyłem używając hacka podobnego do tego, co masz. Nie pamiętam dokładnie, ale myślę, że fizycznie umieściłem lokalizację w łączu jak ': action => 'index.xml'', co nie jest w porządku. – cbron

Odpowiedz

10
+0

Nie. Próbowałem również użyć ścieżki zasobów: 'documents_path (: format =>: csv)' ale to wysyła mnie do documents.csv zamiast dodawać ją jako parametr. – cbron

+1

'link_to 'cvs',: action => 'show',: format =>: csv' Wypróbowałem to teraz, działa idealnie. – Matzi

+0

Właśnie wypróbowałem ten dokładny link w innym kontrolerze i jego wciąż nie działa, ale jego dodanie & format = xml dla ciebie? Dziwne. – cbron

0

mam napotkasz ten sam problem podczas uaktualniania Rails 3,0 do 3.2.17.

Z tego, co widzę, problem nie wynika (jak sugerują inne odpowiedzi) na temat sposobu określenia parametrów do link_to, ale miał do czynienia z definicją tras w routes.rb. Wygląda na to, że w parametrze 3.2 parametr :format może zostać przekazany jako sufiks adresu URL. Jeśli nie ma trasy, która mapuje :format do adresu URL, zostanie ona zignorowana przez link_to. 3.0 dodałby w takim przypadku format jako parametr HTTP. 3.2 już tego nie robi.

Moje rozwiązanie było zmienić swoją pierwotną trasę domyślną z

match ':controller(/:action(/:id(.:format)))' 

do

match ':controller(/:action(/:id)(.:format))' 

pierwotnej definicji określonych adresów URL, jak /admin/posts/index/5.xml, ale nie /admin/posts/index.xml. To wygląda tak samo jak w pierwotnym pytaniu tutaj.

Po zastosowaniu zmiany, :format został również dołączony do adresów URL, które nie zawierały w sobie adresów id.

Powiązane problemy