gpt4 book ai didi

ruby-on-rails - 在这种情况下求助于 send() 是一种好习惯吗?

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

我有一个应用程序布局,其中包含供登录用户编辑其个人资料的链接。最初是这样的:

<%= link_to "Settings", edit_user_path(current_user) %>

但是后来我需要不同类型的用户,我最终得到了这个:

<%= link_to "Settings", send("edit_#{current_user.type.downcase}_path", current_user) %>

Users 表上的“type”列用于 STI,在这里我可以神奇地拥有 User (Model) 类的子类,这对我的目的来说非常方便。

我也有 UsersController 的子类,因此我将为每种类型提供“edit_TYPE_path”路径。

是否有更好的方法来做到这一点,还是我做得很好?

最佳答案

polymorphic URL 助手可以在这里完成这项工作:

edit_polymorphic_path(current_user)

应该可以解决问题。如果您确实发现自己需要使用 send,那么(如果可能)请尝试使用 public_send。顾名思义,这只会调用公共(public)方法。

作为旁注,type.downcase 不太正确 - 如果类名是 FooBar,那么路由名称将是 edit_foo_bar_path 而不是 edit_foobar_pathunderscore 变形更接近您的需要

关于ruby-on-rails - 在这种情况下求助于 send() 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33061417/

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