, bu parametre adını değiştirip hala #resources
sağlar otomatik yönlendirme kullanmak mümkün değildir. Eğer bir :path_prefix
ve :name_prefix
ile articles
eşleyebilir Çözüm olarak
:
map.resources :articles, :path_prefix => "https://stackoverflow.com/users/:login",
:name_prefix => "user_"
:path_prefix
URL'yi etkiler ve bu yolları ile bitireceğiz böylece :name_prefix
, oluşturulan adlandırılmış yolları etkiler:
user_articles GET /users/:login/articles(.:format) {:controller=>"articles", :action=>"index"}
POST /users/:login/articles(.:format) {:controller=>"articles", :action=>"create"}
new_user_article GET /users/:login/articles/new(.:format) {:controller=>"articles", :action=>"new"}
edit_user_article GET /users/:login/articles/:id/edit(.:format) {:controller=>"articles", :action=>"edit"}
user_article GET /users/:login/articles/:id(.:format) {:controller=>"articles", :action=>"show"}
PUT /users/:login/articles/:id(.:format) {:controller=>"articles", :action=>"update"}
DELETE /users/:login/articles/:id(.:format) {:controller=>"articles", :action=>"destroy"}
genel bir kural başparmak gibi olsa da, ben senin soru yayınlanmıştır yönlendirme ile, :user_id
Rayları varsayılan kongre ile sopa. Genel olarak, :id
ve :user_id
'un "sayısal tanımlayıcı" anlamına gelmediği genellikle anlaşılmaktadır - bu, ne olursa olsun "kaynak tanımlayıcısı" anlamına gelir. Ve varsayılan sözleşmeye sadık kalarak, kodunuzun Rails'deki kaynak rotalarını kullanan herkes için daha kolay anlaşılacaktır.
sadece modelinde
#to_param
yeniden tanımlamak, bir kaynak için bir sayısal olmayan bir tanımlayıcı kullanın. Ardından, denetleyicinizde
User#find_by_login!
gibi bu tanımlayıcı tarafından (sayısal kimlik yerine) bulunan bir bulucu kullandığınızdan emin olun.
p.s. Bunu soruyorum çünkü Merb'in yönlendirme sistemi bu kapasiteye sahip. – newtonapple