改变rails的路由中默认的id

目的: /users/2 -> /users/jack

使用to_param方法。

不要改变id到string类型,你需要一个属性是唯一的,比如username,无论什么。

 

在view里面,确保传递的参数不要是id 一定要是model

<td><%= link_to p.name, parse_place_path(p) %></td>

 不是

<td><%= link_to p.name, parse_place_path(p.id) %></td>

 

在model里面,重新 to_param

def to_param
    username
  end

 每个model在缺省状态下有一个to_param直

@place = Place.find(params[:id])

 

接返回id属性,那么我们更改这个就直接返回其他属性,很明了。

在VC的show方法中

@place = Place.find_by_username(params[:id])

 这样就可以了。

如果你依旧想使用id但是URL可以不要单纯的id:/users/id 比如:/users/2-jack

那么modle中

def to_param
    "#{id}-#{username}"
  end

 VC中

@place = Place.find(params[:id])

 ok了!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值