2010-11-14 45 views
6

Điều này có vẻ như nó nên đơn giản như vậy nhưng nó đã gây ra cho tôi các vấn đề.đường dẫn url form_tag đường ray

Tôi có một select_tag kéo từ mô hình. Tất cả những gì tôi muốn là có một người chọn vị trí của họ từ trình đơn thả xuống, nhấn gửi và đưa nó đến trang địa điểm đó.

Dưới đây là những gì tôi có

<% form_tag installation_path do %> 
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %> 
<div id="button"> 
    <p> 
    <%= submit_tag "Go", :name => nil %> 
    </p> 
</div> 

Vấn đề là nó dĩ nhiên muốn một :id nhưng nó sẽ không kéo :id từ trình đơn thả xuống bên dưới.

Tôi đang làm gì sai, mọi đề xuất khác về cách "đúng" để thực hiện việc này.

Cảm ơn

Trả lời

5

Có vẻ như bạn thực sự muốn GET, chứ không phải POST các thông số.

form_tag installation_path, :method => :get do 
+0

Xin cảm ơn! Sử dụng phương pháp sai đã làm hỏng một vấn đề. Tuy nhiên để có các tuyến đường chính xác nó cần phải được installation_path (id). Tuy nhiên id được lấy là id của mảng từ collection_select. Ý tưởng nào? Nó thực sự không có vẻ như nhiệm vụ đơn giản này nên rất khó khăn. – looloobs

+3

Đây là điều, bạn muốn gửi biểu mẫu và đi tới '/ settings /: id'. Thay vào đó, bạn sẽ kết thúc bằng '/ settings? Id =: id'. Vì vậy, bạn có thể cung cấp cho Rails một tuyến đường 'match '/ installation',: to => 'installation # show''. Vấn đề với tuyến đường đó là - nó xung đột với chỉ mục. Vì vậy, thay vào đó bạn nên có một tuyến đường đặc biệt: 'match '/ goto_installation' => 'settings # show',: as => 'goto_installation''. Sau đó, trong form của bạn: 'form_tag goto_installation_path,: method =>: get do'. Sau đó, trong bộ điều khiển của bạn trước khi lọc bạn có thể 'redirect_to installation_path (: id => params [: id])' để có được url mong muốn. –

+0

Xin chào, tôi chỉ đang quay lại điều này, hóa ra tôi không thể sử dụng "match" vì tôi chưa chạy ray3. Bất kỳ ý tưởng về cách khác để làm điều này. Tôi không thể hiểu tại sao điều này lại phức tạp đến vậy. Dường như điều này được thực hiện tất cả các thời gian nhưng tôi dường như không thể tìm thấy bất kỳ hướng dẫn. Cảm ơn trước. Tôi đánh giá cao sự giúp đỡ của bạn. – looloobs

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