作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 rails 中有一组 API 路由,如下所示
namespace "api" do
namespace "v1" do
resources :users do
resources :posts
resources :likes
...
end
end
end
scope "/api/v1/me", :defaults => {:format => 'json'}, :as => 'me' do
resources :posts, :controller => 'api/v1/users/posts'
resources :likes, :controller => 'api/v1/users/likes'
...
end
最佳答案
将路由保留在您的帖子中的方式,然后在 Controller 中解决这个问题怎么样?
这是一个 before_filter
您可以将其应用于所有拉动 User
的路线。来自 :user_id
.
# Set the @user variable from the current url;
# Either by looking up params[:user_id] or
# by assigning current_user if params[:user_id] = 'me'
def user_from_user_id
if params[:user_id] == 'me' && current_user
@user = current_user
else
@user = User.find_by_user_id params[:user_id]
end
raise ActiveRecord::RecordNotFound unless @user
end
@user
变量而不必担心用户是否通过了
user_id
, 或
me
.
/me
访问的所有资源的函数怎么样?路线。然后您可以在您需要的两个命名空间中使用该函数。
# Resources for users, and for "/me/resource"
def user_resources
resources :posts
resources :likes
...
end
namespace 'api' do
namespace 'v1' do
resources :users do
user_resources
end
end
end
scope '/api/v1/:user_id', :constraints => { :user_id => 'me' },
:defaults => {:format => 'json'}, :as => 'me' do
user_resources
end
# We're still missing the plain "/me" route, for getting
# and updating, so hand code those in
match '/api/v1/:id' => 'users#show', :via => :get,
:constraints => { :id => 'me' }
match '/api/v1/:id' => 'users#update', :via => :put,
:constraints => { :id => 'me' }
关于ruby-on-rails-3 - Rails 3.1 如何为指向用户资源的 "me"创建 API 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114933/
我是一名优秀的程序员,十分优秀!