- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个很好的 ErrorFormBuilder 类,它允许我在表单 View 中的相应字段附近添加错误描述:
class ErrorFormBuilder < ActionView::Helpers::FormBuilder
#Adds error message directly inline to a form label
#Accepts all the options normall passed to form.label as well as:
# :hide_errors - true if you don't want errors displayed on this label
# :additional_text - Will add additional text after the error message or after the label if no errors
def label(method, text = nil, options = {})
#Check to see if text for this label has been supplied and humanize the field name if not.
text = text || method.to_s.humanize
#Get a reference to the model object
object = @template.instance_variable_get("@#{@object_name}")
#Make sure we have an object and we're not told to hide errors for this label
unless object.nil? || options[:hide_errors]
#Check if there are any errors for this field in the model
errors = object.errors.on(method.to_sym)
if errors
#Generate the label using the text as well as the error message wrapped in a span with error class
text += " <br/><span class=\"error\">#{errors.is_a?(Array) ? errors.first : errors}</span>"
end
end
#Add any additional text that might be needed on the label
text += " #{options[:additional_text]}" if options[:additional_text]
#Finally hand off to super to deal with the display of the label
super(method, text, options)
end
end
但是 HTML :
text += " <br/><span class=\"error\">#{errors.is_a?(Array) ? errors.first : errors}</span>"
在 View 中默认转义...我尝试添加 {:escape => false} 选项:
super(method, text, options.merge({:escape => false}))
没有成功
有什么办法可以绕过这种行为吗?
谢谢
最佳答案
你试过让你的字符串 html_safe 吗?
irb(main):010:0> a = "A string"
=> "A string"
irb(main):011:0> a.html_safe?
=> false
irb(main):012:0> b = a.html_safe
=> "A string"
irb(main):013:0> b.html_safe?
=> true
参见 http://www.railsdispatch.com/posts/security并向下滚动到底部附近的“您需要了解的内容”:
In general, you can build your Rails app exactly as before. Rails will automatically escape any Strings that it doesn’t create. In almost all cases, this is the right behavior, with no further modifications required.
If Rails is escaping a String that you want to pass through without escaping, simply mark it safe. If you create a String in a helper, you may want to mark parts of it as safe.
我无法测试这是否适用于您的子类助手,但我认为可以。
关于ruby - 在 Rail 3 中的自定义 label_tag 助手中跳过 HTML 转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923625/
在我看来,我有一个复选框和一个标签。我正在使用 SLIM,所以代码是 = check_box_tag 'All Products' = label_tag 'All Products' 生成的等效 H
我需要一些方法将类属性添加到 label_tag() 的输出中表单字段的方法。 我看到可以传入 attrs字典,我已经在 shell 中对其进行了测试,我可以执行以下操作: for field in
有人会认为以下代码将访问 I18n: = label_tag(:person_name) 并查找 en.helpers.label.person_name 或类似的东西。但是,rails 代码似乎没有
在我们的应用程序中,我们像这样显示输入: Date 这经常重复,所以我决定把它放在像这样的助手中: def text_field_for(attribute, title, form,
我想将我的文本字段和其他表单元素包含在标签标签中: Give it to me: 这样我就可以拥有以下 CSS: label { white-space: nowrap; } 然后标签和表单元
我正在尝试编写一个辅助方法来使用 Bootstrap Twitter 简化构建表单。当我尝试将 label_tag 放入辅助方法时,没有任何输出。函数中的所有其他 helper_tag 方法仅适用于此
我注意到在我的 Rails View 中,一些 View 使用(助手?)命名为 xxx 而其他地方使用名为 xxx_tag 的 View ? 谁能概述两者之间的区别以及我如何知道在给定情况下使用哪个?
我的 Rails 3.2.13 应用程序使用带有标签的复选框数组(同一字段名称的多个可能值): %table %tr %td = check_box_tag 'fruits[]
我有一个很好的 ErrorFormBuilder 类,它允许我在表单 View 中的相应字段附近添加错误描述: class ErrorFormBuilder #{errors.is_a?(Ar
我似乎无法将 radio_button_tag 与其 label_tag 水平对齐。 (使用 HAML) =radio_button_tag(:animal, "dog") =label_tag(:a
使用:Rails 3.2.11 & Ruby 1.8.7 我在尝试制作时遇到了一些严重的问题 label_tag输出 html。基本上可以归结为: not work!" %> 我试过了: not wo
我是一名优秀的程序员,十分优秀!