use*_*667 1 ruby ruby-on-rails
我正在铁轨上学习红宝石,我无法理解这条线:
摘自http://guides.rubyonrails.org/routing.html:
get '/patients/:id', to: 'patients#show', as: 'patient'
Run Code Online (Sandbox Code Playgroud)
字符串文字上下文中的单个冒号是什么意思?我认为'get'函数解析它.
在'to'和'as'的上下文中单个冒号怎么样?对此,我没有任何线索.
我读到单冒号指的是符号,但它们总是以下列格式显示
:nospace_varname
实质上,这是一个语法问题.
非常感谢!
以下定义
get '/patients/:id', to: 'patients#show', as: 'patient'
Run Code Online (Sandbox Code Playgroud)
生成一条路线:
patient GET /patients/:id(.:format) patients#show
Run Code Online (Sandbox Code Playgroud)
哪里
get :指HTTP方法
/patients/:id:将是匹配的路线/patients/1.:id只是一个占位符.
to: 'patients#show':将路线映射到show行动PatientsController
as: 'patient':将为prefix您的路线创建一个.因此,您可以在应用程序中轻松访问它patient_url或patient_path.
当您访问此路径时patient_path(@patient),@ Patient是一个id = 1的Patient记录实例.然后生成的路线将是/patients/1.:id将映射为@patient.id.
就在结肠to:和as:云,他们被要求因为这些都是GET方法传递的选项.它们作为哈希传递,并且根据哈希的Ruby语法传递,如果key是符号,则 :需要将其表示为符号.
它可以以任何一种方式使用,使用新的Ruby(Ruby 1.9及更高版本)语法:
to: 'patients#show'
Run Code Online (Sandbox Code Playgroud)
或者使用旧的Ruby语法:
:to => 'patients#show' ## Using Hash Rocket
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |