2013-07-15 40 views
0

我有一個的routes.rb文件看起來像這樣:如何在Rails中創建後更改路徑的位置?

namespace :api do 
namespace :v1 do 
    resources :posts, except: [:new, :edit] 
end 
end 

這讓我產生像「mywebsite.com/api/v1/posts」,而不僅僅是「mywebsite.com/posts」之類的網址默認。

我的創建方法如下:

def create 
    @post = Post.new(params[:post]) 

    if @post.save 
     render json: @post, status: :created, location: @post 
    else 
     render json: @post.errors, status: :unprocessable_entity 
    end 
end 

location: @post偉大的工作,直到我命名空間我的網址。我怎樣才能讓location: @post反映這些變化?

回答

1

如果您在命令行中運行rake routes,您將看到如何你的路由已受到命名空間。您正在尋找相關的路線將是這個樣子:

# rake routes 
api_v1_post GET /api/v1/posts/:id(.:format)      api/v1/posts#show 

你會看到你的show行動現在通過api_v1_post訪問。在您的控制器中,傳遞您的@post實例變量以獲取正確的路由:

# app/controllers/posts_controller.rb 
render json: @post, status: :created, location: api_v1_post_path(@post) 
相關問題