共享活动的URL布局

时间:2009-04-24 18:58:46

标签: ruby-on-rails rest

我的应用程序目前有一个非常简单的URL布局:

map.resource  :account, :controller => "users", :only => [:show, :update, :destroy] 
map.resources :workouts do |workout|
  workout.resource  :chart, :only => [:show]
  workout.resources :taggings, :only => [:destroy, :create]
end

为当前用户提供了很好的简单网址。 我现在正在添加一些公共功能 - 公众可以看到物品的能力。我想在这些URL之前添加用户的登录名。同时,除了一个锻炼资源之外,公共用户无需访问任何内容。我不确定最好的方法。我想结束看起来像这样的网址:

/teich/workouts/3454

大致是

/:user_login/workouts/:id

我是path_prepend吗?对于想要完整RESTful控件的当前用户,最佳做法仍然是使用其用户名前置而不是直接URL,就像我现在一样?我不担心与path_prepend的所有额外路由,因为我将:before权限检查吗?

2 个答案:

答案 0 :(得分:1)

实现此类目标的最简单方法可能是覆盖to_param模型中的User

  def to_param
    "#{id}-#{login}"
  end

Rails在为模型生成路径时使用此方法。然后,当找到字符串发送to_i时将获取整数。

不要忘记你也需要逃避无效的网址字符。

答案 1 :(得分:0)

在API中包含URI定义或命名约定会违反REST体系结构的约束。请参阅:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven