我的 API 在版本化命名空间中,
namespace :api do
namespace :v1 do
resources :posts
end
end
但是现在当我让我的控制器执行时,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 版本(所以 rails 可以使用api_v1_post_url
)?我知道我可以覆盖redirect_to
,但我真的想要一个命名空间感知url_for
,也许 rails 提供了一些钩子?