gpt4 book ai didi

ruby-on-rails - 如何将 block 传递给方法调用?

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:06 24 4
gpt4 key购买 nike

我需要一个助手来生成一个包含在 <li> 中的链接包括一个活跃的类(class)。

没有支持 block ,这很容易:

  def nav_item(*args, &block)
url = args[1]
clazz = 'active' if current_page?(url)

content_tag(:li, :class => clazz) do
link_to(*args)
end
end

但是喜欢link_to我希望我的助手支持用于定义内容的 block 。使用 link_to 我可以:

那么我如何在我的助手中支持相同的功能?

我需要做的就是将 block 传递给 link_to .我目前的尝试

  def nav_item(*args, &block)
url = if block_given?
args.first
else
args[1]
end
clazz = 'active' if current_page?(url)
content_tag(:li, :class => clazz) do
if block_given?
# What goes here?
else
link_to(*args)
end
end
end

最佳答案

您可以将该 block 作为最后一个参数传递给 link_to。像这样:

def nav_item(*args, &block)
url = if block_given?
args.first
else
args[1]
end
clazz = 'active' if current_page?(url)
content_tag(:li, :class => clazz) do
if block
link_to(*args, &block)
else
link_to(*args)
end
end
end

关于ruby-on-rails - 如何将 block 传递给方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519286/

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