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
不需要对您的路线做任何事情。
如果您需要更多帮助,请告诉我。
干杯
这个问题似乎有点基础,但考虑到我有 '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
不需要对您的路线做任何事情。
如果您需要更多帮助,请告诉我。
干杯