gpt4 book ai didi

ruby-on-rails - 没有id的Rails 3资源路由

转载 作者:行者123 更新时间:2023-12-03 13:31:32 27 4
gpt4 key购买 nike

我正在Rails 3上创建一个博客应用程序,并且我想通过以下操作覆盖为帖子生成的默认显示路线

resources :posts, :except => :show


它会为表演路线生成(如果我没有排除它),

/post/:id


我希望我的路由看起来像这样,其中url_title是我的模型在before_save上生成的字符串,其中它删除了非字母数字字符并用连字符替换了空格。

/:year/:month/:day/:url_title


我正在尝试通过以下代码来实现这一点:

match "/:year/:month/:day/:url_title", :to => "posts#show", :as => :post


从理论上讲,这应该允许我调用post_path(@post)(其中@post是我的post类的实例),并且应该能够解决此路由问题,并且几乎可行。

唯一的问题是,它试图替换年份中的帖子ID。其他字段正确填写。我认为发生这种情况是因为rails具有一些默认行为,这使得它确实非常希望在URL中包含id,并且它不信任我使用自己的唯一标识符(在这种情况下为post.url_title)。

我对此可能是错的。任何人都有使用这种路由的经验,或者知道怎么回事?

最佳答案

您可以使用to_param来制作Rails的用法

class Post < ActiveRecord::Base
...
def to_param
"#{year}/#{month}/#{day}/#{title.parameterize}"
end
end


更多信息: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-i-to_paramhttp://www.seoonrails.com/to_param-for-better-looking-urls.html

如果走这条路线,您将要创建一个永久链接属性,并使用 Post.find_by_permalink(params[:id]而不是 Post.find(params[:id])

关于ruby-on-rails - 没有id的Rails 3资源路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326483/

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