gpt4 book ai didi

ruby-on-rails - URL中的Rails标记-使用Active Record Model Post的Title属性代替ID

转载 作者:行者123 更新时间:2023-12-03 07:51:11 26 4
gpt4 key购买 nike

我一直在尝试使Rails创建URL来显示记录,方法是使用它们的标题而不是URL中的ID,例如:

/ posts /有关火箭的帖子

根据在线教程,我做了以下工作:

由于ID不再位于URL中,因此我们必须对代码进行一些更改。

class Post < ActiveRecord::Base
before_create :create_slug

def to_param
slug
end

def create_slug
self.slug = self.title.parameterize
end
end

创建帖子后,标题的URL友好版本存储在数据库的slug列中。

我们还必须更新查找内容,以便使用子弹柱而不是ID来查找记录。
class ProjectsController < ApplicationController
def show
@project = Project.find_by_slug!(params[:id])
end
end

在这一点上,除了显示一条记录外,它似乎可以工作,因为find_by_slug!还不存在。

我是个极端的新手-我应该在哪里定义它?

最佳答案

find_by_foo不是您需要定义的东西。只要您有一个名为“foo”的列,ActiveRecord就会为您使用。如果没有找到记录,则像您一样添加一个感叹号将导致引发异常,而如果您不使用感叹号,则不带异常就返回nil。

至于您的特定问题,您已将子弹添加到Post中,但是您试图在Project上进行搜索。

关于ruby-on-rails - URL中的Rails标记-使用Active Record Model Post的Title属性代替ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252506/

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