【发布时间】:2013-05-26 07:18:17
【问题描述】:
我的 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为此提供了一些钩子?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.2 rails-routing