我对Rails很陌生,而且我正在开发一个应用程序,我想将用户名放在url,Twitter风格中。
我已经解决了这个路由代码的问题,但是它很快变得非常丑陋,我现在在尝试删除时遇到错误,因为帖子ID丢失了。
必须有更好的方法来做这些路线:
get '/:username', to: 'users#index', as: :username
get '/:username/posts', to: 'posts#index', as: :posts
post '/:username/posts', to: 'posts#create', as: :create_post
delete '/:username/posts', to: 'posts#destroy', as: :delete_post
get '/:username/profile', to: 'profiles#index', as: :profile
patch '/:username/profile', to: 'profiles#update'
get '/:username/friends', to: 'friends#index', as: :friends
get '/:username/settings', to: 'settings#index', as: :settings
get '/:username/groups', to: 'groups#index', as: :groups
非常感谢您提供的任何建议。 :)
更新
在这里找到另一个问题。这似乎让我想去的地方。这会解决我的问题,还是我缺少的东西?
scope ":username" do
get '', to: 'profiles#show'
resources :posts
resources :profile
resources :friends
end
答案 0 :(得分:0)
不建议使用:
resources :users
resources :profiles
在路线中等等,因为它遵循RESTful结构。
答案 1 :(得分:0)
考虑使用提供开箱即用的友好id / slug功能的https://github.com/norman/friendly_id,因为在使用这个(友好ID)方法时可能会有一些情况,你没有考虑/测试自己。
另外,您的路线应如下所示:
resources :users, only: [:show, :index, ...] do
resources :posts, only: :show
resources :bars, only: [:show, :new]
end