Rails 路由 link 到特定节目

Rails routing link to specific show

这个问题似乎有点基础,但考虑到我有 'pages#show' 和 url 'history' 的显示页面。我怎样才能将这个特定的显示页面添加到 link:

= link_to 'History', pages_path(@?????)

PD1: 我宁愿避免使用 :id 因为我倾向于播种大量数据,并且每个 db:seed 所有 id 都倾向于改变。

PD2: 我知道我可以创建一个动作然后将其设置在 router.rb 上。但是从长远来看,这是一个很大的时间消耗。

rails generate migration AddPermalinkToPages permalink:string

添加后,您需要在保存页面或更新页面时即时创建永久链接。我通常在模型中这样做,所以我保持控制器干净。如果您希望用户分配永久链接并在视图中调用,您可以在 PagesHelper 中定义它。这实际上取决于您想如何与用户互动。

无论如何,(如果你想在模型中定义它)

  def self.make_slug(aString)
    aString.downcase.gsub(/[^a-z1-9]+/, '-').chomp('-')
  end

在你的page.rb

  def to_param
    permalink
  end

在您的 pages_controller.rb 中(如果您需要的话)- 这里的 id 将是永久链接,因此您的用户将是这样的 /history/a-page-slug

  private
  ## Use callbacks to share common setup or constraints between actions.
  def set_page
    @page = Page.find_by_permalink(params[:id])
  end

不需要对您的路线做任何事情。

如果您需要更多帮助,请告诉我。

干杯