2012-05-02 31 views
9

Tôi đang di chuyển một dự án từ đường ray 3.1 để ray 3.2.2 và tôi có điều này:Chỉ định: Định dạng trong link_to không hoạt động trong đường ray 3.2.2

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

Trong ray 3.1 này quy định cụ thể định dạng trong liên kết html (định dạng = csv) và nó bị bắt bởi một respond_with, nhưng trong 3.2.2 định dạng không bao giờ làm cho nó vào liên kết. Tôi đã quét qua danh sách các cam kết trên github và không thể tìm thấy bất cứ điều gì liên quan đến điều này.

Edit:

Hình như đây là một vấn đề với 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

Bạn đã bao giờ làm việc này chưa? Tôi đang trải qua điều tương tự. Chỉ với các route được đặt tên, tôi có thể thực hiện một cái gì đó như '<% = link_to 'something", something_path (something,: format =>: xml)%> ' – slhck

+0

Yea Tôi đã sử dụng một hack tương tự như những gì bạn có. Tôi không nhớ chính xác nhưng tôi nghĩ rằng tôi về mặt vật lý đặt vị trí trong liên kết như ': action => 'index.xml'', điều đó không cảm thấy đúng mặc dù. – cbron

Trả lời

10
+0

Không. Tôi cũng đã thử sử dụng một đường dẫn tài nguyên: 'documents_path (: format =>: csv)' nhưng điều đó sẽ gửi cho tôi tới documents.csv thay vì thêm nó như là một tham số. – cbron

+1

'link_to 'cvs',: action => 'show',: format =>: csv' Tôi đã thử nó ngay bây giờ, nó hoạt động hoàn hảo cho tôi. – Matzi

+0

Tôi vừa thử liên kết chính xác trong bộ điều khiển khác và nó vẫn không hoạt động, nhưng nó thêm & định dạng = xml cho bạn? Kỳ dị. – cbron

0

tôi đã chạy vào cùng một vấn đề trong khi nâng cấp từ Rails 3.0 3.2.17. Từ những gì tôi thấy, vấn đề là không (như các câu trả lời khác gợi ý) về cách các tham số để link_to được chỉ định, nhưng phải làm với định nghĩa của các tuyến đường trong routes.rb. Có vẻ như trong 3.2, thông số :format chỉ có thể được chuyển qua dưới dạng hậu tố URL. Nếu không có tuyến đường nào bản đồ :format đến URL, thì nó sẽ bị bỏ qua bởi link_to. 3.0 sẽ thêm format làm thông số HTTP, trong trường hợp này. 3.2 không làm điều đó nữa.

giải pháp của tôi là để thay đổi tuyến đường mặc định ban đầu của tôi từ

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

vào

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

Định nghĩa gốc URL bao phủ như /admin/posts/index/5.xml, nhưng không /admin/posts/index.xml. Điều này trông giống như các triệu chứng tương tự như trong câu hỏi ban đầu ở đây.

Sau khi tôi áp dụng thay đổi, :format cũng được đưa vào các URL không có số id trong đó.

Các vấn đề liên quan