gpt4 book ai didi

ruby-on-rails - 覆盖 Rails 默认路由助手

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:20 24 4
gpt4 key购买 nike

我正在编写一个应用程序,我需要在其中覆盖模型的默认路由助手。因此,如果我有一个名为 Model 的模型,以及生成“/model/[id]”的相应助手 model_path()。我想覆盖该助手以生成“/something/[mo​​del.name]”。我知道我可以在 View 助手中执行此操作,但有没有办法在路由级别覆盖它?

最佳答案

您可以在您的模型上定义to_param。它的返回值将在生成的 URL 中用作 id。

class Thing
def to_param
name
end
end

你可以像这样调整你的路线来限制你的资源

scope "/something" do
resources :things
end

或者,您也可以使用子资源。

最后您需要调整您的 Controller ,因为 Thing.find(params[:id]) 显然不会工作。

class ThingsController < ApplicationController
def show
@thing = Thing.where(:name => params[:id).first
end
end

您可能想确保您的 Thingname 是唯一的,否则您会观察到奇怪的事情。

为了避免自己实现所有这些麻烦,您可能还对 friendly_id 感兴趣这给你这个和一些额外的行为(例如使用生成的 slugs)

关于ruby-on-rails - 覆盖 Rails 默认路由助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738952/

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