2017-07-26 8 views
1

私はレールが新しく、ルーティングを正しく処理するのに苦労しています。 今、私は "詳細"と呼ばれるリンクを持っています。ユーザがクリックすると、ページコントローラ内のメソッド "view_details"が渡される位置パラメータで呼び出されます。Ruby on Railsでのパラメータを使ったルーティング

私のroutes.rbをファイルで
<%= link_to "Details", :controller => "pages", :action => "view_details", 
:location => v["coordinates"]%> 

、私が持っている:私は次のようなエラーになっています

get 'pages/view_details/:location', to: 'pages#view_details' 

: Noルートの一致を[GET] 「/pages/view_details/latitude=37.3505570824247 &経度= -121.922104884669 "

私はルートを熊手とき

、私は(接頭辞なしで)これを参照してください。

が、私はこれをどのように修正することができますか?

+0

ルートのプレフィックスは何ですか? – icemelt

+0

投稿を編集しました。挿入された画像を参照してください – user2963365

答えて

2

問題は、あなたがそうlocationパラメータの値としてハッシュを渡しているということです、だけではなく、一つのパラメータ(すなわちlocation)を追加するのではなく、2つのパラメータ(すなわちlatitudlongitude)を追加し、あなたのルーティングが失敗します。この問題を解決するには

あなたはこのように、locationせずにルートを設定できます。

get 'pages/view_details', to: 'pages#view_details' 

を今、あなたが今持っている同じリンクを使用して、あなたはクエリ文字列としてlocationにグループ化latitudlongitudeパラメータを受け取ります、のようなもの:

pages/view_details?location%5Blatitude%5D=37.3505570824247&location%5Blongitude%5D=121.922104884669 

そして、あなたはparams(Aとコントローラ内でそれらを使用することができます他のパラメータを指定した場合):

latitude = params[:location][:latitude] 
longitud = params[:location][:longitude] 
+0

ありがとう、それは私が得ていたエラーを修正しました。しかし、今は、#show actionとshow pages/show viewと呼ばれるようです。 view_detailsアクションはまったく実行されていません。これを引き起こしている可能性があることは分かりますか? – user2963365

+0

nevermind、私はhttps://stackoverflow.com/questions/30633639/controller-method-showgetting-calledを使って修正できました – user2963365

関連する問題