2016-02-19 60 views
0

我试图建立蛞蝓有这样的网址: /artists/1/pink-floyd航线形式型号/ ID /名称

我to_param方法是:

def to_param 
    "#{self.id}/#{self.name.parameterize}" 
    end 

不幸的是网址是/artists/1%2Fpink-floyd 我怎样才能按照我想要的方式做这项工作?

+0

这并不工作,因为它试图使其网址安全的另一个'/'将表明不同的目录。 – DickieBoy

回答

0

您可以通过多种方式来做到这一点。

,我认为这将是最接近你想要达到的目标是一样的东西:

def to_param 
    "#{self.id}-#{self.name.parameterize}" 
end 

这使得:

/artists/1-pink-floyd


另一种方法是改变路线:

get "/artists/:id/:parameterized_name" => "artists#show", as: :artist

这会给你的控制器动作参数:parameterized_name

要在视图中使用它:

artist_path(artist, parameterized_name: artist.name.parameterize)

+0

如果我在路线中使用资源会怎么样? –