rails路由了解
学习了一段时间的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。