【问题标题】:How to convert an array into content_tags in Ruby on Rails?如何在 Ruby on Rails 中将数组转换为 content_tags?
【发布时间】:2013-03-04 22:30:53
【问题描述】:

我正在尝试在 Rails 中编写一个辅助函数,将值数组转换为radio_buttons 数组。在我的表格中,我有这个:

<%= radio_tags_for_select(f.object.invoice_types) %>

这是我的辅助函数:

def radio_tags_for_select(array)
  options = []
  array.each do |value|
    options << content_tag(:span, value, :class => 'radio_option')
  end
  options
end

不幸的是,该函数只输出我无法真正使用的原始 HTML。有没有更优雅的解决方案,甚至可以使用radio_tag 助手?

感谢您的帮助。

【问题讨论】:

  • 您使用的是 RoR 3、3.1 还是 3.2?请相应地限制您的标签。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


【解决方案1】:

你可以在一行代码中做到这一点:

f.object.invoice_types.collect {|e| radio_button_tag("my_radio_button_name", e) }

现在,这就是你想要的吗?一组单选按钮?

【讨论】:

  • 好的,谢谢,但这会生成一些原始 HTML。我还是 Rails 的新手,我该如何逃脱呢?
  • 你可以使用助手 h 来转义它:
  • 现在,如果问题是 helper 已经在转义 html,而你想让 html 不被转义,你可以这样做:(f.object.invoice_types.collect {|e| radio_button_tag("my_radio_button_name", e) }).html_safe 告诉 rails 可以将该字符串呈现为 html,尽管 radio_button_tag 已经将该字符串标记为 html 安全
  • 不幸的是,这些都不起作用。无论我做什么,HTML 都不会转义。
  • 所以当你说它未转义时,在屏幕上,而不是看到单选按钮,你看到的是 html 代码,对吗?如果是这种情况,那么它就被转义了,你转义代码以避免 xss 攻击。你可以这样做: raw 请检查这个问题,它解释了在铁路中转义和不转义代码的区别:stackoverflow.com/questions/4251284/…
猜你喜欢
  • 1970-01-01
  • 2014-04-30
  • 2017-05-05
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 2017-09-12
  • 1970-01-01
相关资源
最近更新 更多