改变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了!

原文地址:https://www.cnblogs.com/iosdev/p/2859933.html