如何将块传递给Helper返回的'link_to'?

时间:2014-04-06 23:34:12

标签: ruby-on-rails ruby-on-rails-4 actionviewhelper

我觉得这个单独的标题有点难以解释,所以这里有一些我提出的代码:

Rails查看助手

module SplashHelper

  def send_link_or_tag(link=true)
    if link
      link_to nil, root_path, class: 'to-block'
    else
      content_tag :div, 'The content'
    end
  end
end

使用帮助程序的查看(haml)

- 5.times do |i|
  - if i%2 == 0

    = send_link_or_tag do
      -#THE PROBLEM IS THAT I CAN'T ADD CONTENT TO THE
        RETURNED link_to (<a> tag) in this case the <p> tag
        INSIDE THIS BLOCK!
      %p = 2 + 2 

  - else

    = send_link_or_tag false do
      -# SAME PROBLEM HERE.
      %p = 3 * 3

总之,帮助程序成功返回 link_to content_tag ,但我需要保持连接添加 Helper返回的标签内的更多标签(通过块)。 看起来在Rails中应该很容易做到,我错过了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

试试这个辅助方法,

def send_link_or_tag(link=true)
  if link
    link_to root_path, class: 'to-block' do
      yield
    end
  else
    content_tag :div do
      yield
    end
  end
end

这将从您视图中定义的块中生成adiv标记中的内容。