代码之家  ›  专栏  ›  技术社区  ›  Sixty4Bit

从Rails助手返回多个标记的最佳方法是什么?

  •  26
  • Sixty4Bit  · 技术社区  · 18 年前

    我想创建一个隐藏字段并在一个助手中创建一个链接,然后将两者都输出到我的erb。

    <%= my_cool_helper "something", form %>
    

    应该输出的结果

    link_to "something", a_path
    form.hidden_field "something".tableize, :value => "something"
    

    助手的定义是什么样的?链接到什么和form.hidden字段的细节并不重要。重要的是,如何返回两个不同调用的输出。

    3 回复  |  直到 10 年前
        1
  •  23
  •   Orion Edwards    18 年前

    有几种方法可以做到这一点。

    请记住,现有的Rails帮助程序 link_to 等等,只是输出字符串。您可以将字符串连接在一起并返回该字符串(如果事情很简单的话,大多数时候我都是这样做的)。

    如:

    link_to( "something", something_path ) +  #NOTE THE PLUS FOR STRING CONCAT
    form.hidden_field('something'.tableize, :value=>'something')
    

    如果你在做更复杂的事情,你可以把代码放在一个部分中,然后让助手调用 render :partial .

    如果你做的事情比这更复杂,那么你可能想看看ErrTheblog的 block_to_partial 帮手,很酷

        2
  •  11
  •   Sixty4Bit    18 年前

    到目前为止,我想到的最好办法是:

    def my_cool_helper(name, form)
      out = capture { link_to name, a_path }
      out << capture { form.hidden_field name.tableize, value => 'something' }
    end
    

    有更好的方法吗?

        3
  •  2
  •   Jay_Pandya    10 年前

    如果要缓冲除字符串之外的其他输出,则可以使用 concat 而不是 + . 看到这个 http://thepugautomatic.com/2013/06/helpers/

    推荐文章