欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rails路由了解

程序员文章站 2022-05-05 20:13:54
...

学习了一段时间的rails on ruby,对rails路由有了些了解,做个总结。

首先进入工程文件夹下输入:

rails g controller users

这时生成users_controller.rb以及对应的控制器Users,生成的Users控制器会自动更新路由文件(route),rails通过这个文件寻找URL和网页之间的对应关系。

 

比如现在在views/users中有两个页面文件,login.html.erb和sign_up.html.erb

 

 

配置路由:

第一种方法,在routes.rb文件里:

Rails.application.routes.draw do
  get "users/login"
  get "users/sign_up"
end

这时启动工程(rails s),在浏览器中输入:localhost:3000/users/login

 

这时将来自/users/login的请求映射到Users控制器的login动作上,对应到GET请求方法上,就会自动在/users/login的地址获得一个页面。

 

若在login.html.erb上:

<p> login </P>
<%= link_to "用户注册",users_sign_up_path %>

 登上login页面点击”用户注册“,则转到sign_up页面。

 

 

第二种方法,在routes.rb文件中:

Rails.application.routes.draw do
  get "login" => "users#login"
  get "signup" => "users#sign_up"
end

这种写法,get后面的"login"可以*变换,就像第二个,写成"sign_up"和"signup"都行,只是登录时在浏览器输入的路径要根据这里的写法,这里要到sign_up页面则要:localhost:3000/signup

这里的路径不像上一种方法要加/users。

在写link_to时,路径写成signup_path

 

下面介绍以下路径后的as

就第二种方法来说,在后面加上as:

Rails.application.routes.draw do
  get "login" => "users#login",:as => "ttt"
  get "signup" => "users#sign_up"
end

 这时在写link_to时,路径signup_path也可以写成ttt_path。

 

 

相关标签: rails路由 as