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。

相关推荐