动态获取路由路径

2024-04-25

我最近将一些模板从 ERB 转换为 Haml。大多数情况下,它变得更干净、更好,但按钮定义开始变得糟糕。

我想转换这个

= link_to t('.new', :default => t("helpers.links.new")),
          new_intern_path,                                       
          :class => 'btn btn-primary' if can? :create, Intern    

像这样的事情

= new_button Intern

除此之外我还有其他几个实体Intern因此所有其他页面也将从中受益。

所以,我输入了这段代码

  def new_button(person_class)
    return unless can?(:create, person_class)

    new_route_method = eval("new_#{person_class.name.tableize}_path")

    link_to t('.new', :default => t("helpers.links.new")),
              new_route_method,                                       
              :class => 'btn btn-primary'
  end

它按预期工作。我只是不确定这一点eval打电话(因为这是邪恶的等等)。有没有更简单、不那么邪恶的方法呢?


哦,这是一个更好的版本:

def edit_button(person)
  return unless can?(:edit, person)

  link_to t('.edit', :default => t("helpers.links.edit")),
          send("edit_#{person.class.name.singularize.underscore}_path", person),
          :class => 'btn btn-mini'
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态获取路由路径 的相关文章

  • 如何在 Rails 2 中正确使用 OmniAuth

    我正在尝试为我的应用程序使用 OmniAuth 0 2 6 策略 架构为 Rails 2 3 10 Rack 版本为 1 1 OmniAuth 需要此版本或更高版本 出现的问题是 Rails 无法识别我重定向到 auth provider
  • 用户在 Rails 中选择 CSS 样式表

    我正在 Rails 中开发一个网站 我希望用户能够将 CSS 样式表更改为浅色或深色主题 我认为这样我就可以为样式表使用变量 我尝试通过在我的视图中添加一个链接来更改该变量 如下所示 在我的控制器中调用此函数 class ProjectsC
  • 将表单作为本地表单传递给 Rails 5 中渲染的部分 ajax

    我已经查遍了 找不到有效的解决方案 相关控制器 profits controller rb def new tabs market Market order mjsnumber all first profit Profit new pro
  • 如何在rescue_from中渲染500页

    我想在我的应用程序出现异常时发送电子邮件并呈现常规 500 页 我找不到如何执行 500 页渲染 class ApplicationController lt ActionController Base rescue from Standa
  • 弃用警告:ActionView::Base 实例应使用查找上下文、赋值和控制器来构造

    我将应用程序从 Rails 5 2 迁移到 Rails 6 只剩下一件事要做 但我不知道如何做 我有这个弃用警告 弃用警告 ActionView Base 实例应使用查找上下文 赋值和控制器来构造 从 Users xxx xxxx app
  • ActiveSupport 如何计算月度总和?

    我很高兴也很惊讶地发现 ActiveSupport 按照我想要的方式进行月度汇总 无论相关月份中有多少天 添加1 month对特定的Time将使您在该月的同一天着陆Time gt Time utc 2012 2 1 gt Wed Feb 0
  • Bundler 似乎无法通过 Rbenv 找到正确的 Ruby

    多年来我一直使用 RVM 作为 Ruby 版本管理器 但由于其简单性 我想改用 rbenv 但是我在部署时发现了一些奇怪的问题 这似乎是错误的地方 env RBENV ROOT home deploy rbenv PATH home dep
  • 如何使用键盘进入 ruby​​-debug 运行 Rails 应用程序?

    我正在运行 ruby debugbundle exec rdebug script server在 Rails 2 3 上 当我按下Ctrl C 它退出整个程序和调试器 我希望它停止执行程序并将我带入调试器会话 I tried catch
  • 您可以使用 Jekyll 的 _includes 文件夹中的子目录吗?

    我的计划是在 includes目录 包括 页脚 包括 英雄 includes cta etc 当我引用那个时 include footers footer1 html 我收到以下错误 Liquid Exception Included fi
  • Rails 4.0 expire_fragment/缓存过期不起作用

    我一直在尝试使用 Rails 的缓存功能 但我无法使某些缓存片段过期 尽管它们似乎已过期 使用 Rails 教程网站中指出的 Russian Doll Caching 我正在使用此配置 我使release controller rb 控制器
  • 覆盖 Rails ActiveRecord 销毁行为的最佳方法是什么?

    我有一个应用程序 我想在其中覆盖许多模型的销毁行为 用例是用户可能有删除特定记录的合法需要 但实际上从数据库中删除该行会破坏引用完整性 从而影响其他相关模型 例如 系统的用户可能想要删除不再与其有业务往来的客户 但需要维护与该客户的交易 看
  • 您推荐使用哪些工具来分析 Rails 应用程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找 Rails 的分析工具 我目前正在玩和测试 ruby prof 和 Railsbench 但我对使其工作所需的大量调整和修改
  • 单表继承发现问题

    我有以下3个rails类 它们都存储在一张表中 使用rails的单表继承 class Template lt ActiveRecord Base class ThingTemplate lt Template class StockThin
  • 使用 bcrypt-ruby 使用版本 $2y 验证哈希密码

    我们陷入了困境 需要使用 Ruby 根据现有的用户数据库对用户进行身份验证 用户的密码都是使用password compat PHP库生成的 所有散列密码均以 2y 开头 我一直在使用 bcrypt ruby 尝试对用户进行身份验证 但没有
  • 使用 Assetic PHP 通过 RVM 安装后 Sass 损坏

    我正在尝试设置 Assetic PHP 资源编译器 并且它可以与 CoffeeScript Stylus 和 Less 一起使用 所有 NPM 包都运行良好 然而 对于 Sass 我遇到了问题 以下是我到目前为止所采取的步骤 我安装了 RV
  • 您将如何整理这个控制器逻辑?

    我在控制器中有一些逻辑 如果满足某些条件 它会设置对象的状态 if params concept consulted legal 0 params concept consulted marketing 1 concept attribut
  • docker 中的 Capybara headless chrome 返回 DevToolsActivePort 文件不存在

    我正在尝试配置系统测试以使用硒中的无头铬 我有以下水豚配置 spec support capybara rb Capybara server puma Silent true RSpec configure do config config
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • .js.erb VS .js

    将 Rails 应用程序的 javascript 放入 js erb 文件而不只是将其放入 application js 文件有什么好处 我有一个企业创建按钮 因此我应该将代码放入 create js erb 文件中 还是使用以下方法将其放
  • 如何让我的导航栏出现在 Rails 应用程序的每个页面上?

    目前 我的导航栏位于我的index htm erb 文件中 目前仅在主页上显示 我想知道为了让导航栏出现在我的应用程序的每一页上 必须采取哪些必要步骤 我的导航栏的代码如下所示

随机推荐

  • 如何在 Django 中创建 unique_for_field slug?

    姜戈有一个日期唯一 http docs djangoproject com en dev ref models fields unique for date您可以在将 SlugField 添加到模型时设置的属性 这会导致 slug 仅对于您
  • 像在eclipse中一样关闭intellij idea中未使用的模块

    据我所知 目前 intellij idea 中没有任何功能可以做到这一点 我不知道为什么 但他们不支持这样做 至少这是我通过所有研究发现的结果 也许我们中的一些人用不同的方式来解决这个问题 如何在 intellij 中使用多个模块 在处理多
  • 如何从 USB 加载 LUKS 密码,然后返回键盘?

    我想设置一台具有全磁盘加密功能的无头 Linux Debian Wheezy PC 能够使用 USB 驱动器或通过键盘输入密码来解锁磁盘 我的起点是使用 Debian 安装程序中基本的整个磁盘加密选项进行全新安装 该安装程序将 boot 之
  • 如何在 Square MockWebServer 中使用 SSL?

    我尝试启用 SSLSquare 的 MockWebServer https github com square okhttp tree master mockwebserver在测试下模拟我的 Android 应用程序中的所有 Web 服务
  • 如何使用 PowerShell 递归合并/“展平”文件夹结构

    我正在寻求帮助来重组许多子文件夹中的大量文件 示例来源 folderX aaa txt bbb txt folderY ccc txt folderZ ddd txt eee txt 理想结果 folderX aaa txt folderX
  • 自上一步以来进程或线程已更改

    我正在 Visual Studio 上调试一些代码 此代码属于我创建的自定义会话提供程序 我正在 Web 应用程序启动时对其进行调试 它开始初始化我的提供程序 并且在该函数上我有一个第一次成功命中的断点 但是 同一断点再次被击中 但它有一个
  • 带有自定义离线页面的 Angular PWA

    在 Angular 8 应用程序中 我想添加一个自定义离线页面 只是一个简单的 html 文件 我已将我的应用程序设置为 PWA 使用 angular pwa并配置了一切 以便它至少在在线时顺利工作 然而 我很难为 PWA 用户提供更新 因
  • unsafePerformIO 和 FFI 库初始化

    我正在为 C 中的库创建一个 FFI 模块 该模块希望在执行其他操作之前调用一个一次性 不可重入的函数 这个调用是幂等的 但是有状态的 所以我可以在每个 Haskell 调用中调用它 但它很慢 并且由于不可重入 可能会导致冲突 那么现在是使
  • 允许用户在 Android 应用程序中插入图像

    我的问题是 如何创建 imageButton 允许用户从手机上传图像并将其作为图片配置文件插入应用程序中 例如 像 Whatsapp 一样 它允许用户从手机中选择图像并将其设置为图片配置文件 Thanks 我的 XML 文件
  • 为什么 Func 与 Func> 不明确?

    这个问题让我很困惑 所以我想我会在这里问 希望 C 大师可以向我解释一下 为什么这段代码会产生错误 class Program static void Main string args Foo X the error is on this
  • Laravel 5.3 存储和读取文件目录

    目前正在尝试处理文件 但很难弄清楚将它们放在哪里以及如何在列表中读回它们 我尝试过将一些测试文件放入 files array dir opendir asset files open the cwd also do an err check
  • 如何使用 pyspark 从 s3 存储桶读取 csv 文件

    我正在使用 Apache Spark 3 1 0 和 Python 3 9 6 我正在尝试从 AWS S3 存储桶读取 csv 文件 如下所示 spark SparkSession builder getOrCreate file s3 b
  • 不获取AudioListenerInterruptionEnd触发器

    我对 OpenAl 和 MPMoviePlayerController 的组合有疑问 我在 OpenAl 设置过程中注册了 AudioInterruptionLister 当我开始播放视频时 侦听器会收到 AudioListenerInte
  • 离子 3 角度 4 动画不起作用

    我有一个组件 我正在尝试为手风琴列表设置动画 我已经进行了所有更改 例如包括import BrowserModule from angular platform browser and import BrowserAnimationsMod
  • std::unordered_set 迭代器遍历的复杂性

    我最近玩了一个std unordered set http en cppreference com w cpp container unordered set 我怀疑我的 STL 版本会跟踪某些 FILO 数据结构 看起来像列表 中的非空存
  • Android JSON解析并存储到数据库

    我正在制作一个具有数据库的应用程序 现在我正在尝试从中解析数据值
  • Kafka Streams - 减少大型状态存储的内存占用

    我有一个拓扑 见下文 可以读取一个非常大的主题 每天超过十亿条消息 这个 Kafka Streams 应用程序的内存使用量相当高 我正在寻找一些关于如何减少状态存储占用空间的建议 更多详细信息如下 Note 我并不是想逃避国有商店 我只是认
  • 清除给定 iOS 应用程序的 cookie

    我的应用程序连接到服务器 并且基于 cookie 服务器将发出不同的响应 是否无法以编程方式清除cookie存储 以便服务器下次联系服务器时无法识别我的应用程序 据我所知 清除 Settings app 中的 Cookie 仅适用于 Saf
  • 如何用R中的频率表获得中位数? [复制]

    这个问题在这里已经有答案了 Problem 我改变了问题的表述 因为似乎缺乏清晰度 所以 我们有数千家医院 他们的患者年龄在 0 岁到 100 岁之间 对于每个年龄段 他们都有一定数量的患者 例如Hospital1 有 10 名 1 岁患者
  • 动态获取路由路径

    我最近将一些模板从 ERB 转换为 Haml 大多数情况下 它变得更干净 更好 但按钮定义开始变得糟糕 我想转换这个 link to t new default gt t helpers links new new intern path