Rails路由链接到特定节目

时间:2015-06-15 18:45:51

标签: ruby-on-rails-4 routing

这个问题似乎有些基本,但考虑到我的'pages#show'带有url'history'的显示页面。如何将此特定节目页面添加到链接:

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

PD1:我希望避免使用:id,因为我倾向于播放大量数据,并且每db:seed所有ID都会发生变化。

PD2:我知道我可以创建一个动作,然后在router.rb上设置它。但在很长一段时间里,消耗的时间很长。

1 个答案:

答案 0 :(得分:1)

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

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

如果您需要更多帮助,请与我们联系。

干杯