我已经覆盖了标准的 Rails FormHelper,让它以我们的(几乎基于 Bootstrap)格式吐出表单元素(在http://www.likeawritingdesk.com/posts/very-custom-form-b uilders-in-rails 之后)。
它工作正常,但很难为其编写规范。我正在使用这样的规范:
rendered_form = helper.my_custom_form_for(@account, :url => '/accounts') do |f|
f.inputs do
# This isn't rendered
f.text_field 'name', :size => 30
# This is rendered
f.select 'locale', options_for_select([%w(Australia en-AU), %w(UK en-GB)])
end
end
呈现的内容包括选择标签,但不包括文本字段标签。我怀疑这是因为 ActionView 现在处理块的方式,附加块的返回值而不是块中每个语句的返回值。显然,当在应用程序的上下文中使用时,辅助方法会通过一些 ERB 并在该上下文中进行评估。
- 我是对的,不可能以这种方式测试渲染辅助方法,在一个块中有多个语句吗?
- 如果我是对的,那么在一个完整的应用程序的上下文中,制作一个与助手所做的事情相同的规范的最简单的方法是什么?制作一个 ERB 字符串并以某种方式将其传递给助手进行渲染?