API はバージョン管理された名前空間にあり、
namespace :api do
namespace :v1 do
resources :posts
end
end
しかし、コントローラに aを実行させると、ルートが定義されていないためredirect_to @post
、ルートエラーが発生します。Post
def create
@post = Post.new(params[:post])
if @post.save
redirect_to @post
else
# ...
end
end
undefined method `post_url' for #<Api::V1::PostsController:0x007fb9c5fc8858>
名前付きルートにリダイレクトするようにコントローラーを更新できることはわかっていますが、それは世界の終わりではありません。
def create
@post = Post.new(params[:post])
if @post.save
redirect_to api_v1_post_url(@post)
# or redirect_to [:api, :v1, @post]
else
# ...
end
end
redirect_to @post
それが正しいAPIバージョンであるべきであることを自動的に検出する方法はありapi_v1_post_url
ますか? 上書きできることはわかっていますredirect_to
が、本当に名前空間を認識したいのですがurl_for
、おそらくレールはこれにいくつかのフックを提供していますか?