0

我有一个Clips Controller地方:

def set_clip
  @clip = Clip.find(params[:id])
end

我的剪辑有一个:title用户可以在创建时设置的属性。

我试图在 URL 中实现这一点,剪辑将显示为:

http://localhost:3000/clip/1/:title

另外,我需要让 gsub 参与进来,这样那些丑陋的%20就不会出现在每个空间上

有人可以启发我吗?

我正在寻找没有 FriendlyID 的解决方案

4

1 回答 1

3

假设 /1/ 是记录的 ID,将 :title 作为额外的 url 是多余的。

实现相同结果的类似(且简单)方法是to_param在模型上定义:

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

然后,这将为您提供“clip/1-title”形式的 url,它可以与活动记录find(param[:id])方法一起正常工作

此外,更安全的参数字符串是使用以下参数对标题进行参数化:

"#{id}-{title.parameterize}"
于 2013-08-30T16:11:30.483 回答