我正在编写一个帮助程序,将HTML属性添加到rails中的link_标记中.因此,我的 idea 是,我的helper方法应该接受传递给它的任何参数或块,使用这些相同的参数调用link_to,将其属性添加到返回的内容中,并将结果返回给调用者.

这样地:

def link_to(*args, &block)
  ... rails code in link_to ...
end

def myhelper(*args, &block) # Notice that at this point, 'args' has already
  link_to()                 # become an array of arguments and 'block' has
  ... my code ...           # already been turned into a Proc.
end

myhelper() # Any arguments or blocks I pass with this call should make
           # it all the way through to link_to.

因此,正如您所看到的,似乎没有办法(不涉及大量代码和条件分支)将myhelper接收到的内容传递给link_,而不将所有参数返回到我的方法之前的样子.

对于这个问题,有没有更"像Ruby "的解决方案?

推荐答案

可以在方法调用中使用*&将数组转换回参数列表,并将过程转换回块.所以你可以这么做:

def myhelper(*args, &block)
  link_to(*args, &block)
  # your code
end

Ruby-on-rails相关问答推荐

用至少一个缺省值初始化Ruby数组的最简洁方法是什么?

Rails6.1|有没有一种方法可以判断哪些关联已经加入到一个范围中?

如何通过graphqlMutations 从rails销毁当前用户会话

在单个继承表和另一个表中的类之间建立多对多关联

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

如何在两个日期之间生成随机日期和时间?

上传图片 Ruby on Rails

如何使用 capistrano deploy 定位特定的提交 SHA

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

使用 SQLite 3 将 RoR 应用程序部署到 Heroku 失败

DateTime.now 还是 Time.now?

升级到设计 3.1 => 获取重置密码令牌无效

Rspec 与 TestUnit

设计记住我和会话

link_to 将参数与 url 一起发送并在目标页面上抓取它们

Rspec - Rails - 如何遵循重定向

Ruby中的参数化获取请求?

快速添加链接[:notice]

禁用 JS/Ajax 请求时的 ActionController::InvalidAuthenticityToken

Rails - 邮件,将正文作为纯文本获取