link_to中的友好URL

时间:2014-08-13 22:58:22

标签: ruby-on-rails ruby-on-rails-4

我的PointPage模型中包含url字段。我需要在网站上将point_page#show的链接格式化为:

domain.com/:url

所以,我已添加到routes.rb

get ':url', to: 'point_pages#show'

point_page.rb

def to_param
  url
end
show中的

point_page_controller.rb方法是:

def show
  @point_page = PointPage.find_by(url: params[:url])
end

所以,一切正常,domain.com/:url == domain.com/point_pages/:url

但是,视图中的link_to方法会生成第二种类型的网址,而不是第一种网址:

link_to 'Link', point_page_path(page) #=> <a href="/point_pages/url">Link</a>

我需要<a href="/url">Link</a>

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在路线定义中添加as选项:

get ':url', to: 'point_pages#show', as: 'url'

这将创建一个url_path路线助手:

link_to 'Link', url_path(page)