2010-12-13 59 views
1

嗨 我已經問過類似這個問題,但從來沒有解決。所以我再次嘗試。Select_tag提交需要重定向到顯示頁面:id?

這看起來應該是如此簡單。我沒有使用Rails 3,但順便說一下。

我想要做的是有一個下拉菜單,當一個人選擇該位置並按下「去」他們去那個頁面。

<% form_tag installation_path([:id]), :url => { :action => "show" }, :method => :get do %> 
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %> 
<%= submit_tag 'Go' %> 
<% end %> 

這就成了問題:http://localhost:3000/installations/id?id=1&commit=Create。它找不到:id。我只是不知道如何正確的路由。這似乎不應該那麼困難。

任何幫助將是偉大的。謝謝。

+0

是什麼在你的路線?安裝/ ID?絕對不對。如果你使用正常的Rails路由,那麼你的show動作應該是安裝/:id – Samo 2010-12-13 17:13:32

+0

我只有寧靜的路線map.resources:安裝,好像我需要在路線中做些什麼,我只是無法弄清楚它是什麼。我相信它會自動使用路由安裝/ ID?因爲我需要使用:get方法。謝謝 – looloobs 2010-12-13 18:17:33

回答

0

我認爲你的form_tag可能有問題。看來你正在兩次定義路徑。

兩個

installation_path([:id]) 

:url => { :action => "show" } 

被用來生成路徑,但你應該使用這兩種我不認爲。只是

installation_path([:id]) 

:url => { :controller => "installations", :action => "show", :id => id } 
0

您需要創建和使用不基於安裝ID(並且不使用Rails資源路線碰撞)的新「秀」的路線走,並繼續將安裝ID作爲params對象的一部分發送到控制器的show action中。

在routes.rb中,

get 'show_installation', to: 'installations#show' 

在您看來,

<% form_tag show_installation_path, :method => :get %> 
...