Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将块传递给方法调用?_Ruby On Rails_Ruby_Block_Helper_Link To - Fatal编程技术网

Ruby on rails 如何将块传递给方法调用?

Ruby on rails 如何将块传递给方法调用?,ruby-on-rails,ruby,block,helper,link-to,Ruby On Rails,Ruby,Block,Helper,Link To,我需要一个助手来生成一个包含活动类的包装的链接 没有支撑块,这很容易: 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\u to一样,我希望我的助手支持用于定义内容的块。有了链接,

我需要一个助手来生成一个包含活动类的
  • 包装的链接

    没有支撑块,这很容易:

      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\u 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
    

    您只需将块作为最后一个参数传递给
    link\u 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                         
    

    您只需将块作为最后一个参数传递给
    link\u 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                         
    

    那么你的问题是当你把块作为变量时,如何把块传递给函数,比如你的例子中的
    block
    ?那么你的问题是当你把块作为变量时,如何把块传递给函数,比如你的例子中的
    block
    ?我试过了,但是没有用,原来这是因为其他地方的一个错误。谢谢。我试过了,但没用,原来是因为别的地方出了错。谢谢