當定義在routes.rb
以下路線:軌道4 - 資源ID路線明確的型號名稱
resources :streams
Rails的生成以下網址:
streams GET /streams(.:format)
POST /streams(.:format)
new_stream GET /streams/new(.:format)
edit_stream GET /streams/:id/edit(.:format)
stream GET /streams/:id(.:format)
PATCH /streams/:id(.:format)
PUT /streams/:id(.:format)
DELETE /streams/:id(.:format)
我想有一個明確的資源ID ,即:stream_id
而不是:id
。
編輯:
對於簡單的資源的解決方案是例如@ user2262149和@vimsha提到:
resources :streams, :param => :stream_id
問題是與嵌套資源。如果我這樣做:
resources :streams do
resource :comment, :param => :comment_id
end
我會得到這條路線(這是確定):
stream_comments GET streams/:stream_id/comments(.:format)
但另一方面父資源(再次,:id
代替:stream_id
):
streams GET streams/:id(.:format)
所以....
如果我試圖解決它添加:param => :stream_id
父資源:
resources :streams, :param => :stream_id do
resource :comment, :param => :comment_id
end
然後父資源的路徑是確定的:
stream GET /api/streams/:stream_id(.:format)
,但我得到的子資源真正的混亂:
stream_comments GET /api/streams/:stream_stream_id/comments(.:format)
你有一個想法如何解決這個問題??
太好了,謝謝。剛剛編輯我的問題,因爲對於嵌套的資源,它變得有點混亂... – guyaloni
@guyaloni,只是更新了我的答案,希望這有助於 – user2262149
好吧,看起來不是最優雅的解決方案,但它的作品,謝謝! 「only:[]」是做什麼的? – guyaloni