主页

rails routes

2023-09-11 11:28AM

参考:http://rails_book.siwei.me/part3_rails_premier/routes.html

http请求方法的类型: 

POST: create 创建资源(仅用于新建)

PUT/PATCH: update 更新资源 (仅用于修改: PUT完全更新资源,PATCH 部分更新资源)

GET: index, show, new, edit 检查资源(仅用于查询:只读取数据,不修改数据,不会对数据库的现有数据产生影响)

DELETE: destroy 删除资源(仅用于删除)

在config/routes.rb中 

resources :fruits

一个 resources,就定义了new, show, index, create, edit, update, destory 7种路由

可以通过使用命令 $ bundle exec rake routes 来查看详细路由

    fruits GET    /fruits(.:format)          fruits#index  

           POST   /fruits(.:format)          fruits#create

new_fruit GET    /fruits/new(.:format)      fruits#new   

edit_fruit GET    /fruits/:id/edit(.:format) fruits#edit

     fruit GET    /fruits/:id(.:format)      fruits#show   

           PATCH  /fruits/:id(.:format)      fruits#update

           PUT    /fruits/:id(.:format)      fruits#update

           DELETE /fruits/:id(.:format)      fruits#destroy

指定路由

# 这里会生成第八种路由: GET: /fruits/list,使用GET方法可以访问 /fruits/list

resources :fruits do

  collection do

    get :list

  end

end

下面代码的作用是定义rails默认的action之外的action

 collection do

    get :list

 end

eg: list不存在默认的七种路由中,所以要重新定义

GET /fruits/list 使用GET方法来达到 /fruits/list 的url上

对应: list_fruits_path的action就是 list action

重点来了:

下面的四种写法,都会产生相同的<a>内容

<a href = '/fruits/new'>跳转到新建页面</a> 这个是最传统的html写法

<a href= '<%= new_fruit_path %>'>跳转到新建页面</a>

<%= link_to '跳转到新建页面', '/fruits/new' %>

<%= link_to '跳转到新建页面', new_fruit_path %>

它们生成的HTML内容都是一样的:(浏览器页面F12的内容)

下面是Rails风格(把可读性发挥到极致)的写法:

<%= edit_fruit_url({:id => fruit_id}) %>

这个方法可以引申成:(ruby方法最外层圆括号可以省略,方法的最后一个参数如果是hash的话 {} 也可以省略)

<%= edit_fruit_url :id => fruit_id %>

继续省略

<%= edit_fruit_url fruit_id %> #这个是rails的推荐写法

eg: fruit_id = 1

1. "/fruit/" + fruit_id + "/edit/"

2. "/fruits/#{fruit_id}/edit"

3. edit_fruit_path fruit_id #这个是rails的推荐写法

第三种形式是可读性最好的

要想生成某个url:

/fruits/list?a=1&b=2

就可以写成:

list_fruits_path(:a=>1, :b=>2) 

 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论