【问题标题】:One-line iteration and output in ERBERB中的单行迭代和输出
【发布时间】:2014-04-25 11:06:55
【问题描述】:

如何遍历一个集合并在 ERB 的一行中输出一个属性?

我尝试了以下方法,但输出的是整个对象:

<%= Post.all.each {|p| (content_tag :div, p.title)} %>

【问题讨论】:

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


    【解决方案1】:

    正如@nmeylan 指出的那样,在视图中调用 Post.all 并不是一个好习惯。

    我会使用@posts 作为下面的示例。你可以试试:

    <%= @posts.map { |p| content_tag :div, h(p.title) }.join.html_safe %>
    

    由于 rails 4 默认转义 HTML,您必须调用 html_saferaw。但似乎 p.title 是用户输入,所以它必须被转义。

    【讨论】:

      【解决方案2】:

      首先,您在视图中调用 ActiveRecord 方法 (Post.all),这是一种不好的做法,请在控制器中调用它。

      然后,要回答您的问题,我会使用content_tag_for methoddiv_for

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-29
        • 2015-09-24
        • 2014-03-20
        • 1970-01-01
        • 2016-11-18
        相关资源
        最近更新 更多