gpt4 book ai didi

ruby-on-rails - 减少 Rails 路由和 url 助手中的冗余

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:34:12 26 4
gpt4 key购买 nike

我想将文章的标题添加到它的 url,类似于 SO url。我被建议在 answer 中使用以下设置我的另一个问题

# routes.rb
match '/articles/:id/:title' => 'articles#show', :as => :article_with_title

# articles/index.html.erb
link_to article.title, article_with_title_path(article, :title => article.title.downcase.gsub(/[^a-z0-9]+/,' ').strip.gsub(/\s+/,'-'))

它有效,但我觉得它有点多余。有没有办法让它变得更好?处理多个路由的其他通用方法怎么样?

match '/articles/:id/:title' => 'articles#show'
match '/users/:id/:name' => 'users#show'
etc.

备注:

  1. 目前以下路线工作正常:/article/:id/:action, /article/:id/:title 条件是文章不能有标题 编辑、显示、索引等
  2. 我认为 friendly_id 在这里是不必要的,因为路由明确包含 :id
  3. 如我所见,SO 对问题 /question/:id/:title/posts/:id/:action 和用户 使用不同的路径/users/:id/:name, /users/:action/:id

最佳答案

只需覆盖模型中的 to_param。内存中未经测试的例子:

def to_param
self.id + "-" + self.name.parameterize
end

这种方法意味着您不必更改路由器,也可以继续使用 Model.find(params[:id]) 或类似的方法。

基本上是另一个答案中提到的 Railscast 所做的,以及 friendly_id 的核心内容也是。

关于ruby-on-rails - 减少 Rails 路由和 url 助手中的冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com