`

Routes中:new, :collection和:member的区别

阅读更多

RESTful风格的路由动词默认有7个(分别为:index, show, create, new, edit, update, destroy)。有时我们需要自定义路由,这时就要用到:on参数。:on参数有三种取值,分别为collection,member,new。
如果想添加一个member方式的路由,可以这样:

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

将会添加一个路由:GET请求/photos/1/preview路由到PhotosController的preview action,同时也会新建preview_photo_url 和 preview_photo_path这两个helpers。
上面的member block中可以添加很多条记录。如果只有一条,一般会这样写:

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

下面总结一下member,new,collection的区别:

:member 是对单个实体进行操作,创建路由格式是: /:controller/:id/:your_method
:collection 是对实体集合进行操作,创建路由格式是: /:controller/:your_method
:new 是新建一个实体,创建路由格式是: /:controller/:your_method/new

举例如下:

map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }

第一行创建的路由是:/users/rss
第二行创建的路由是:/users/1/profile
“1”就是user_id,我们需要知道用户ID才能得到用户的profile.
第三行创建的路由是:/users/new/draft

 

form:http://rubyer.me/blog/583/

分享到:
评论

相关推荐

    Rails Routes中new、collection、member的区别浅析

    :on参数有三种取值,分别为collection,member,new。  如果想添加一个member方式的路由,可以这样: 代码如下: resources :photos do  member do  get ‘preview’  end end 将会添加一个路由:GET请求/...

    routes:WordPress的简单路由

    Routes :: map ( 'myfoo/bar' , 'my_callback_function' ); Routes :: map ( 'my-events/:event' , function ( $ params ) { $ event_slug = $ params [ 'event' ]; $ event = new ECP_Event ( $ event_slug ); $...

    js_from_routes::motorway:从Rails路线自动生成JS

    : : 来自Routes的JS从您的Rails路由生成路径帮助程序和API方法,从而使您的工作效率更高,并防止发生与路由相关的错误。 由于代码生成是完全可定制的,因此可以在非常不同的场景中使用。为什么? :thinking_face: ...

    tide-fluent-routes:潮汐延伸,允许更流畅地定义路线

    目前,它支持设置路径,您可以在路由树中的任何位置集成中间件,并且可以集成端点。 潮汐原生路线可能发生的某些事情(目前)尚不可行。 潮汐前缀路由未实现 你不能嵌套潮汐服务器 要使用此功能,您可以use tide_...

    Laravel开发-laravel-admin-routes

    在本文中,我们将深入探讨Laravel开发中的一个重要概念——`laravel-admin-routes`,它是由Bytenet创建的一个管理路由包。这个包的主要目的是为了简化Laravel应用中后台管理界面的路由设置,使得开发者可以更高效、...

    Laravel开发-laravel-routes

    在Laravel中,路由定义在`routes/web.php`和`routes/api.php`两个文件中。通过`Route::get()`, `Route::post()`, `Route::put()`, `Route::delete()`等方法,我们可以为不同的HTTP动词注册路由。例如: ```php ...

    rails-routes:在Rails应用程序上启用configroutes * .rb

    将此行添加到您的应用程序的Gemfile中: gem "rails-routes" 然后执行: $ bundle 或自己安装为: $ gem install rails-routes 用法 将这个gem添加到您的项目后,您可以在config/routes创建多个路由文件。 只要...

    swaggerize-routes:Swagger文档驱动的路由生成器

    swaggerize-routes是和使用的组件,用于基于解析和构建路由定义。 swaggerize-routes提供以下功能: 模式验证。 从Swagger 2.0文档中构建路线定义。 输入参数的验证助手。 用法 var builder = require ( '...

    js-routes:将名为Rails的路由引入javascript

    路由 生成将所有以Rails命名的路由定义为javascript助手的javascript文件安装您的Rails Gemfile: gem "js-routes"设置跑: rake js:routes在app/javascript/packs/application.js中使路由全局可用: window ....

    express-mount-routes:一个快递包,可从文件系统自动加载路由

    在yarn add express-mount-routes或npm install express-mount-routes --save : const path = require ( 'path' ) ; const express = require ( 'express' ) ; const routes = require ( 'express-mount-routes' )...

    laravel-geo-routes:Laravel的地理位置限制路线

    然后执行以下命令: composer require laracrafts/laravel-geo-routes 注:如果您使用的是,你可以跳过服务提供商的登记和别名,因为他们做自己自动注册,但不要忘了所描述的发布配置。 注册服务提供商打开您的...

    Routes:影之地M +路线

    标题中的“Routes:影之地M +路线”似乎指的是一个游戏或者软件项目,其中"Routes"可能代表游戏或应用中的路径、导航或者剧情分支,而"影之地M"可能是这款游戏或项目的特定区域或主题,"+"后面的"路线"则可能是指玩家...

    laravel-routes-builder:由PHP 8.0属性提供支持的Routes构建器

    eslym / laravel-routes-builder 由PHP 8.0属性提供支持的Routes构建器 注意:请将此包与php artisan route:cache 安装 composer require eslym/laravel-routes-builder ^1.0 用法 use Eslym \ Laravel \ ...

    Routes:规划你的运动路线

    路线规划你的运动路线建立步骤在~/.gradle/gradle.properties设置您的 Google Maps API 密钥: ROUTES_MAPS_API_KEY = YOUR_API_KEY在~/.gradle/gradle.properties设置您的 Google Directions API 密钥: ROUTES_...

    Laravel开发-json-routes

    `json-routes`的实践使得开发者可以将路由配置从传统的PHP `routes/web.php`和`routes/api.php`文件中抽离出来,存储到JSON文件中。这样做的好处包括代码组织、版本控制和易于自动化。 首先,让我们深入了解一下...

    node-routes:典型 node.js Web 服务器的应用程序路由集合

    在`app.js`中,你会看到类似这样的代码,用于加载和使用`node-routes`: ```javascript const express = require('express'); const app = express(); const usersRoutes = require('./routes/users'); const ...

    Laravel开发-laravel-jwt-routes

    JWT是一种轻量级的身份验证和授权机制,通过在客户端和服务器之间传递加密的令牌来确保安全的数据交换。JWT包含三个部分:头部、载荷和签名,这些部分通过`.`分隔。它们是不可变的,一旦创建,就不能修改。 ### 2. ...

    hapi-routes:Hapi插件,用于注册路线

    Hapi Routes允许您将所有路由逻辑放在指定文件夹中的不同文件中。 这使您可以清楚地了解自己的路线。 如何 server.js const server = new Hapi . server ( ) ; await server . register ( { plugin : require ( '...

    ts_routes-rails:受js-routes的启发,将Rails URL助手导出到TypeScript。

    TsRoutes for Rails 此gem在TypeScript中生成Rails URL帮助器,该routes.rb与routes.rb同步。 这是受启发的,它发明了将URL助手导出到JavaScript的好主意。用法在您的lib/tasks/ts_routes.rake : namespace :ts do ...

Global site tag (gtag.js) - Google Analytics