次の行に沿った URL スキームを使用して、ネストされたリソースを作成しようとしていますhttp://example.com/username/...
。
私が現在持っているのはこれです:
ActionController::Routing::Routes.draw do |map|
map.home '/', :controller => 'home'
map.resource :session
map.resources :users, :has_many => :nodes
#map.user '/:id', :controller => 'users', :action => 'show', :has_many => :nodes
map.resources :nodes, :belongs_to => :user
end
これにより、次のような URL が生成されます。
http://example.local/users/username
http://example.local/users/username/nodes
「ユーザー」プレフィックスを回避する方法は私にはわかりません。as: => ''
に " " オプションを渡してmap.resources
も機能せず、名前付きルートは " :has_many
" または " :belongs_to
" オプションをサポートしていないようです。
map.resources :users
「 」をコメントアウトし、「 」行のコメントを外してから、機能map.user
しているように見えます…ネストされたリソースに到達するまで。次に、次のエラーを吐き出します。
undefined method `user_nodes_path' for #<ActionView::Base:0x1052c8d18>
この問題はこれまで何度も出てきており、常に「なぜそれをしたいのですか?」という質問に直面しています。反応。率直に言って、Twitter はそれを行い、Facebook はそれを行い、私もそれをやりたいと思っています! ;-D
ユーザー名が組み込みパスと競合しないようにする方法についての一般的な批判については、ユーザー名の最小文字数を 6 文字に設定し、すべての組み込みルート レベル パス セグメントを 5 文字以下にする予定です (つまり、" /opt/...
"オプションの場合は " /in/...
"、セッション ログインの場合は " " など)。