1

名前を入力するだけで、プログラムにデータベースのアイテムに関する情報が表示されます。名前にドットが含まれている場合を除いて、IDとほとんどの名前で正常に機能します。

match 'show/:name' => 'show#displayinfo'

私が持っているコントローラーには:

@details = Description.where(:name => params[:name] ).first

名前が見つからなかった場合の対処方法に関する条件とともに

次のように入力すると、../show/Ruby正常に動作しますが../show/a.b、空のページが表示され、開発ログにこれ以外のエラーは表示されません。

Processing by ShowController#displayinfo as 
Parameters: {"name"=>"a"}

これを入力../show/aすると、エラーや空のビューはなく、期待どおりに機能します。

データベース内のアイテムの名前を変更する以外に、これを解決する方法はありますか?

4

2 に答える 2

2

説明書より

match 'show/:name' => 'show#displayinfo', :format => false

するべきです。

于 2012-07-10T21:39:37.957 に答える
1

通常、ドットの後のすべてが要求の形式と見なされます。つまり、html や json など、Rails アプリケーションで構成されている MIME タイプは何でも構いません。

このデフォルトの動作を超える方法の例を次に示します: http://zargony.com/2009/05/05/routing-parameters-with-a-dot

基本的なトリックは、貪欲な正規表現を使用してパラメーターを解析することです。

于 2012-07-10T21:38:03.120 に答える