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

标签 ruby-on-rails ruby block helper link-to

我需要一个助手来生成一个包含在 <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/

相关文章:

ruby-on-rails - 为什么 Google Bot Crawling 不存在 CSS 文件?

ruby-on-rails - 当安装了 Xcode 4.3.2 并且缺少 gcc 时,如何使用 RVM 安装 Ruby 1.9.3?

ruby-on-rails - Nokogiri : libxms2 is missing 的 Git 捆绑安装错误

ruby-on-rails - ruby rails : time_select default value

ruby - Ruby 中的负数除法

ruby-on-rails - 将 block 传递给 rails3 中的标签助手

apache - 我如何使用 htaccess 限制 ip block -range-?

ruby-on-rails - 在使用 Pow 和 Nginx 开发的 Rails 4 中,文件上传不起作用

javascript - 通过 bootstrap 使用 jquery popover 进行 Rails CRUD

ruby - 将 block 传递给方法 - Ruby