我试图设置slug以获得这样的网址:
/artists/1/pink-floyd
我的to_param方法是:
def to_param
"#{self.id}/#{self.name.parameterize}"
end
不幸的是,网址是/artists/1%2Fpink-floyd
我怎样才能按照我想要的方式完成这项工作?
答案 0 :(得分:0)
你可以通过多种方式做到这一点。
我认为与你想达到的目标最接近的是:
Lunches (table)
---------------
Lunch_Guid (PK, varchar(32), not null)
Lunch_Name (varchar(50), not null)
Lunch_Key (varchar(50), not null) -- UrlSafe_base64 random string
....
Foods (table)
-------------
Food_Guid (PK, varchar(32), not null)
Food_Name (varchar(50), not null)
Food_Key (varchar(50), not null) -- UrlSafe_base64 random string
....
Tray (table)
------------
Tray_Guid (PK, varchar(32), not null)
Item_Key (varchar(50), null) -- "Make-shift relationship."
Tray_Key (varchar(50), not null) -- UrlSafe_base64 random string
...
这使得:
def to_param
"#{self.id}-#{self.name.parameterize}"
end
另一种方法是改变路线:
/artists/1-pink-floyd
这将为您的控制器操作提供参数get "/artists/:id/:parameterized_name" => "artists#show", as: :artist
。
在视图中使用它:
:parameterized_name