Ruby on rails 3 如何指定重写的Rails 3 FormHelper?

Ruby on rails 3 如何指定重写的Rails 3 FormHelper?,ruby-on-rails-3,twitter-bootstrap,rspec2,erb,actionview,Ruby On Rails 3,Twitter Bootstrap,Rspec2,Erb,Actionview,我已经覆盖了标准的Rails FormHelper,让它以我们(几乎基于引导)的格式(之后)输出表单元素 它工作得很好,但很难为它编写规范。我使用的规范如下: 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 #

我已经覆盖了标准的Rails FormHelper,让它以我们(几乎基于引导)的格式(之后)输出表单元素

它工作得很好,但很难为它编写规范。我使用的规范如下:

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现在处理块的方式,附加块的返回值,而不是块中每个语句的返回值。显然,在应用程序的上下文中使用helper方法时,会传递一些ERB,并在该上下文中进行计算

  • 在一个块中使用多个语句时,不可能以这种方式测试呈现助手方法,对吗
  • 如果我是对的,那么在一个完整的应用程序的上下文中,用什么方法来制作一个与助手做相同事情的规范呢?制作一个ERB字符串并以某种方式将其传递给辅助对象进行渲染

  • 你解决了这个问题吗?我很好奇你是不是刚刚把街区里的最后一个座位还给我了。您是否尝试更改f.text_字段/f.select顺序以查看返回的内容?如果是,那么您只需添加它们:

    rendered_form = helper.my_custom_form_for(@account, :url => '/accounts') do |f|
      f.inputs do
        f.text_field('name', :size => 30) +
        f.select('locale', options_for_select([%w(Australia en-AU), %w(UK en-GB)]))
      end
    end