【问题标题】:Mixing code HTML in a helper在帮助程序中混合代码 HTML
【发布时间】:2015-02-05 16:38:14
【问题描述】:

以下内容有效,但是当我看到其他人使用的一些简化的 Ruby 代码时,它显得非常笨拙。

在帮助程序中混合 Ruby 和 HTML 时,这是正确的编码方式吗?

def display_children(children)
  if children.count == 0
    "<p>No child records exist</p>".html_safe
  else  
    s = ""
    s << "<table class='table table-bordered text-center'>"
    children.in_groups_of(4) do |row_children|
      s << "<tr>"
      row_children.each do |child|
        s << "<td class='col-md-3'>"

        if child
          s << link_to(child.name, child)
        else
          s << '&nbsp;'
        end

        s << "</td>"
      end
      s << "</tr>"  
    end
    s << "</table>"
    s.html_safe
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    简单的答案是从帮助程序中删除所有代码并将其放在部分中。

    用于选择 HTML 输出的代码通常嵌入到 HTML 中。帮助程序用于运行更复杂的代码,例如查询和准备要显示给用户的数据。

    【讨论】:

    • 那么助手是否曾经生成 html 或只是将原始数据返回到视图以显示为 html?
    • 它不会“生成” HTML,但您可以让它返回 HTML,就像您在代码中所做的那样。你在想的是一个局部的。部分“产生”,或者更确切地说,“呈现”浏览器的 HTML。当您在视图中调用助手时,它只是调用常规方法/函数/子例程。没有什么特别的事情发生。请记住,您的方法位于辅助模块中,而不是控制器类中。这篇文章应该会有所帮助:stackoverflow.com/questions/6474596/…
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 2023-03-26
    • 1970-01-01
    • 2010-11-29
    • 2014-06-04
    • 2011-01-21
    • 2011-03-28
    • 2014-06-15
    相关资源
    最近更新 更多