私はRails 2.3.11に取り組んでいます。私がhttp://www.abc.com/users/e.f.jsonのようなURLを持っているならば、私はidが 'e.f'であり、期待されるフォーマットが 'json'であると期待します。誰かがそれをやる方法を提案してもらえますか? ありがとうございました!railsのルートidにドットをつける
7
A
答えて
8
:形式の規則のため、Railsはすべてのパラメータをドットなしで解析します。あなたがしたい場合は、route parameters with dotsを持つことができます。
# You can change the regex to more restrictive patterns
map.connect 'users/:id', :controller => 'users', :action => 'show', :id => /.*/
しかし、以来
両方の「*」と「+」正規表現のワイルドカードは、それが無視されます、貪欲です:完全にPARAM(フォーマット)を。フォーマットの正規表現:map.connect 'users/:id:format', :controller => 'users', :action => 'show', :requirements => { :format => /\.[^.]+/, :id => /.*/ }
map.connect 'users/:id', :controller => 'users', :action => 'show'
欠点はあなたがドットを含める必要があるということです:あなたは絶対にユーザ名にドットを持つ必要がある場合
さて、あなたを助けることができる擬似回避策がありますそれ以外の場合は、ユーザー名式によって捕捉されます。次に、あなたのコントローラーでドットフォーマット(例:.json)を処理する必要があります。
2
ここではandersonvom'sに似た解決策がありますが、それをすべて1つのルールに保持しています(そして最新のRailsルーティング略語を使用しています)。
map.connect 'users/:id(.:format)', to: 'users#show', id: /.*?/, format: /[^.]+/
(:format
の前に.
注)
トリックは、任意の形式を追加(.:format)
フォーマットが認識されるように、IDの正規表現は、非貪欲にすることです。ルートに名前を付ける場合は、フォーマットには依存しない方法でリダイレクト、リンクなどに使用できるようにするには、ルールを1つにすることが重要です。
関連する問題
- 1. Railsページの3つのルート
- 2. リファクタリングRailsの3つのルート
- 3. Railsテストユニット:モデルの未使用IDを見つける方法
- 4. Ruby on RailsルートにIDを追加する方法
- 5. Rails IDと異なるものに基づくルート
- 6. ASP.NET MVC URL(ドット)をサポートするルート
- 7. after_validation Railsで既存のレコードのIDを見つけよう
- 8. Railsルートに表示されるルートを見つけることができません。
- 9. ルートのIDを持つASP.NETコアフォーム
- 10. ネームサーバの末尾にドットまたはドットを受け入れる
- 11. /resource_1/{:id}/action/{:resource_2_id}にrailsルートを書き込む方法は?
- 12. マウスオーバー時にドットを見つけるパフォーマンスの問題
- 13. ドットを付けてルートを要求するApache RewriteRule正規表現
- 14. ディレクトリの "ルート"を見つける
- 15. ルートの決定数を見つける
- 16. いくつかのルートがRailsの4
- 17. ASP.NET MVC 2 Issue - ルート内のドット
- 18. 複数のIDが持つルート(Laravel 5.2)
- 19. Railsの - ルートが
- 20. Railsの3ルート
- 21. カスタムRailsのルート
- 22. Railsルートのヘルプ
- 23. URL RailsルートのRailsハッシュパラメータ
- 24. 矢印のあるsvgパスにドットをつけて塗りつぶす
- 25. [モデル名]が 'id' =で見つかりません - has_many関連でIDを見つける方法 - Rails 4
- 26. Railsのルートにセキュリティを追加する
- 27. C#ソケットIDを見つけるには?
- 28. idを持つrailsルートをエイリアスするにはどうすればよいですか?
- 29. Railsルート - 短いResourcefullルート
- 30. Railsルート:ネストされたルートに一致
私は2.3のルート構文に慣れていませんが、ピリオドを禁止するためにフォーマットに制約を追加することができます。これはフォーマットを最後のドット区切りセグメントだけに保つのに役立ちますが、書式をそのままにしておくと、あなたのIDの一部が書式として使われてしまいます。 – coreyward
[Rails - "dot"(例:/google.com)]のパラメタ(http://stackoverflow.com/questions/2952235/rails-params-with-dot-e-g-google-com) –