Naming a Route

get 'home/index', as: "different_name"

会得到prefix: different_name代替home_index, 这个是路径的名字。

get 'home/ping', to: "home#pong"

to方法,定义到哪个控制器的哪个action。 这会改变默认的控制器的action。而控制器会指向view。


Paramter

通过浏览器输入的URI Pattern ,可以导向控制器的某个action

在router.rb中

  resources :posts
  get ':year(/:month(/:day))', to: 'posts#index'
Verb  URI Pattern               Controller#Action
GET    /:year(/:month(/:day))(.:format)		 posts#index 

解释:这里参数:year是必须的,括号里的是可选的。

http://localhost:3000/2018/01/01

Started GET "/2018/01/01" for 127.0.0.1 at 2018-06-18 09:52:25 +0800
Processing by PostsController#index as HTML
  Parameters: {"year"=>"2018", "month"=>"01", "day"=>"01"}
  Rendering posts/index.html.erb within layouts/application
  Post Load (0.1ms)  SELECT "posts".* FROM "posts"
  ↳ app/views/posts/index.html.erb:16
  Rendered posts/index.html.erb within layouts/application (1.8ms)
Completed 200 OK in 39ms (Views: 37.7ms | ActiveRecord: 0.1ms)

解释:在controller的index动作中, 你可以利用params[]来存取定义在URL中的值。

valid_date?方法,找不到出处?

  def index
    if Date.valid_date?(params[:year].to_i, params[:month].to_i, params[:day].to_i)
      start_date = Date.parse("#{params[:day]}.#{params[:month]}.#{params[:year]}")
      end_date = start_date
    elsif Date.valid_date?(params[:year].to_i, params[:month].to_i, 1)
      start_date = Date.parse("1.#{params[:month]}.#{params[:year]}")
      end_date = start_date.end_of_month
    elsif params[:year] && Date.valid_date?(params[:year].to_i, 1, 1)
      start_date = Date.parse("1.1.#{params[:year]}")
      end_date = start_date.end_of_year
    end
    if start_date && end_date
      @posts = Post.where(published_on: start_date..end_date)
    end
  end

constraints(constraints={})

用于限制url

  get ':year(/:month(/:day))', to: 'posts#index', constraints: {year: /\d{4}/, month: /\d{2}/, day: /\d{2}/ }
也可以接受块:

constraints(id: /\d+\.\d+/) do

resources :posts

end

加入

Learn Rails5.2 Routes。( 很少用到的参数:constraints和redirect)的更多相关文章

  1. 11 个很少人知道但很有用的 Linux 命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  2. linux下snprintf和sprinf很少被提及的区别

    函数原型:int snprintf(char *dest, size_t size, const char *fmt, ...);函数说明: snprintf函数中的第二个参数,size的解释:siz ...

  3. 很少人知道的office专用卸载工具

    Microsoft Office是微软公司开发的一套基于 Windows 操作系统的办公软件套装.常用组件有 Word.Excel.Powerpoint等.当我们不需要再用了或者想安装旧版本的话,首先 ...

  4. DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)

    函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...

  5. Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:孙立伟 链接:http://www.zhihu.com/question/20140085/answer/14107336 ...

  6. 12个很少被人知道的CSS事实

    之前没有认真的研究过,padding-bottom的值如果是百分比,那么它的实际值是根据父类的宽度来调整的.我还以为是根据这个元素的本身的宽度来定义呢?汗..padding-top/padding-l ...

  7. 为什么国外的 App 很少会有开屏广告?

    前言: 笔者在知乎看到这个问题,觉得这的确是一个值得关注和回答的现象,遂写了回答并整理成本文发布在此抛砖引玉,欢迎讨论. 正文: 古话说得好,先问是不是,再问为什么. 对于「国外的 App 很少有开屏 ...

  8. 滚动效果marquee的用户体验不好,很少被用到,一般用jquery替代

    滚动效果marquee的用户体验不好,很少被用到,一般用jquery替代

  9. Linux Shell 裡一些很少用到卻很有用的指令

    Linux Shell 裡一些很少用到卻很有用的指令 2009年11月30日 13:53:00 yaoyasong 阅读数:414   Linux Shell 裡一些很少用到卻很有用的指令 你是不是已 ...

随机推荐

  1. 【php】---mysql语法增、删、改、查---【巷子】

    1.mysql基本语法 001.增 语法:          insert into 表名 (列1,列2,列3) values(值1,值2,值3)     批量插入:插入insert-插入多行   语 ...

  2. New动态分配 Delete 释放内存

    在C++中,对于变量和对象都是编译器在编译时分配好的,对于数组初始化时,无法确定多少内存,很容意造成大开小用的情况. new  动态分配 一般格式:1. 指针变量名 =new  类型标识符; 2.指针 ...

  3. The Accomodation of Students---hdu2444(二分图,最大匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意:有n个学生,m个关系,但是如果a认识b,b认识c,但是a不一定认识c: 求能不能把这n个人 ...

  4. Openstack(八)部署镜像服务glance

    8.1glance镜像服务介绍 Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,然后通过其他模块(glance-registry及im ...

  5. python3 函数即变量的使用

    函数即变量的意思是函数被使用时后面不用(),类似变量的使用,具体如下面的示例代码: def say(name): print(name) hi = say hi('你好!') def add(): p ...

  6. Python的星号(*)和双星号(**)用法

    ①引言 在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法是在变量前加单个星号或两个星号,实现多参数的传人或变量的拆解. ②什么是星号变量 最初,星号变量是用在函数的参数传递上的 ...

  7. 一、怎样使用eclipse查看JDK源码

    前言: JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库.阅读一些系统的源码会帮助你理解一些基本的原理. 一.创建一个工程 在eclipse中创建一个jav ...

  8. java--jvm启动的参数

    java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保 ...

  9. scss使用指南--每天一点

    我们平时都称之为 Sass,其实可分成sass和scss, 其中Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),以".sass"后缀为扩展名:而 SCSS ...

  10. 使用sublime text3配置c++编译运行

    首先我们可以下载一个Dev-c++,这东西可以自己帮你配置好网上提示的那一大堆奇怪的文件... 网上博客大都在说些什么添加各种编译环境,加入sublime-build什么的..然而作为一个喜欢偷懒的人 ...