2010-12-13 3 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

+0

でなければなりません。私はちょっと安いルートmap.resourcesを持っています:インストールすれば、ルートで何かする必要があるようです。私はそれが自動的にルートのインストール/ IDを使用すると思いますか? :getメソッドを使う必要があるからです。ありがとう – looloobs

答えて

0

あなたのform_tagに問題があると思われます。あなたはパスを2回定義しているようです。

両方

installation_path([:id]) 

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

パスを生成するために使用されているが、私はあなたの両方を使用する必要がありますとは思いません。ちょうどあなたがインストールIDに基づいていない(とRailsのリソースルートと衝突しない)新しい「ショー」のルートを作成して使用する必要が

installation_path([:id]) 

または

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

で行きます、 paramsオブジェクトの一部としてコントローラのshowアクションにインストールIDを送信し続けます。

あなたのルートには何がroutes.rbをで

、あなたのビューで

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

<% form_tag show_installation_path, :method => :get %> 
... 
関連する問題