rails5.2.2框架路由的定义使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luyaran/article/details/86159726

接着之前的坑,咱们这次来看下这个类似于PHP的laravel的路由是怎么来使用的。

首先是最简单的,格式如下:

#传参,将这个请求交给patient控制器的show方法
#其中:id会被转成一个参数 params[:id]传入Controller
get '/patients/:id', to: 'patient#show'
#不传参
get '/patients', to: 'patient#show'     

 之后就是资源方面的路由了,会上传文件等一系列路由,格式如下:

resources :photos

上述代码可以创建七个不同的路由,全部映射到 Photos其中控制器上的方法如下:

还有涉及到命名空间的路由,你像我们需要把控制器存在 app/controllers/admin 文件夹中,就要路由中做如下声明:

namespace :admin do
    resources :posts, :comments
end

上述代码会为 posts 和 comments 控制器生成很多路由。对 Admin::PostsController 来说,Rails 会生成:

还有就是,如果我们想把 /posts(前面没有 /admin)映射到 Admin::PostsController 控制器上,可以这么声明:

scope module: 'admin' do
  resources :posts, :comments
end

如果是单个,需如下声明:

resources :photos, module: 'admin'

如果想把 /admin/posts 映射到 PostsController 控制器(不在 Admin:: 命名空间内),可以这么声明:

scope '/admin' do
    resources :posts, :comments
end

如果只有一个资源,还可以这么声明:
 

resources :posts, path'/admin/posts'

当存在一对多关系时,可做如下声明:

resources :magazines do
  resources :ads
end

可用的路由并不局限于 REST 路由默认创建的那七个,还可以添加额外的集合路由或成员路由。

1、添加成员路由

resources :photos do
  member do
    get 'preview'
  end
end

该路由可识别/photos/1/preview 是个 GET 请求,映射到 PhotosControllerpreview 动作上,资源的 ID 传入 params[:id]。同时还生成了 preview_photo_urlpreview_photo_path 两个帮助方法。

如果资源不多,可使用:

resources :photos do
  get 'preview', on: :member
end

2、添加集合路由

resources :photos do
  collection do
    get 'search'
  end
end

这段路由能识别 /photos/search 是个 GET 请求,映射到 PhotosControllersearch 动作上。同时还会生成 search_photos_urlsearch_photos_path两个帮助方法。

和成员路由一样,也可使用 :on 选项:

resources :photos do
  get 'search', on: :collection
end

3、添加额外新建动作的路由

resources :comments do
  get 'preview', on: :new
end

这段代码能识别 /comments/new/preview 是个 GET 请求,映射到 CommentsControllerpreview 动作上。同时还会生成 preview_new_comment_urlpreview_new_comment_path 两个路由帮助方法。

好啦,可能还不完全,暂时在网上找的差不多也就这么些了,之后有机会在一起分享吧。

好啦,本次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/86159726
今日推荐