gpt4 book ai didi

ruby-on-rails-3 - 有条件的 to_param 方法

转载 作者:行者123 更新时间:2023-12-04 15:04:11 25 4
gpt4 key购买 nike

我正在使用模型实例方法 t_param 生成一个 SEO 风格的 URL

def to_param
url
end

这样我就可以使用 path_to_model(model) 生成到模型的链接,并使用 Model.find_by_url(url) 查询模型。到目前为止,这工作正常。

我的问题:我有后端的 RESTFUL 管理路由。我可以以某种方式使 to_param 方法对调用它的路由使用react吗?因为我想在后端使用 ID 参数而不是 URL 参数创建链接。或者这里的正确方法是什么?

最佳答案

我遇到过同样的问题。模型真的不能/不应该知道关于 Controller 的任何事情。 Controller 的工作是确定正在请求什么资源,并调用模型来访问它。如果您的 AdminController 需要使用标准数字 ID,您就不会想要触摸 to_param .

事实证明,解决方案非常简单,我在生产中使用它。

假设您已经为 Controller 命名了 namespace ,那么您将拥有一个 MyModelController 和一个 Admin::MyModelController,以及它们的助手。在 Admin 中,以标准方式做事。在 MyModelController 中,执行以下操作:

在您的资源操作中,请参阅 params[:id]但将其视为永久链接(URL)。例如

def get
@my_model = MyModel.find_by_url(params[:id])
...
end

在你的 MyModelHelper
def my_model_path my_model
super my_model.url
end

def my_model_url my_model
super my_model.url
end

对我来说,我觉得这是“不打架”并完成我需要完成的工作的最佳方式。

可能有更聪明的方法来覆盖命名路由。另外我认为你不能使用 helper :all使用这种方法,除非您在生成路径/url 之前检查您是否处于管理员状态。

关于ruby-on-rails-3 - 有条件的 to_param 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647523/

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