2012-10-02 36 views
2

我已经覆盖了标准的Rails表单助手把它吐出的表单元素出在我们的(几乎是基于自举)格式(http://www.likeawritingdesk.com/posts/very-custom-form-builders-in-rails后)。你如何符合规范一个重写的Rails 3表单助手?

它工作正常,但很难写一个规范。我使用的是这样的规格:

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处理块,附加块,而不是块中的每个语句的返回值的返回值的方式。显然,在一个应用程序中上下文中使用时,辅助方法被传递的一些雇员再培训局在这方面评估。

  1. 我是不是有可能以这种方式测试渲染助手方法,在块中有多个语句?
  2. 如果我是正确的,那么做一个规范的最简单的方法是什么?与完整应用程序的上下文中帮助者完成相同的事情?制作一个ERB字符串,并以某种方式将其传递给助手来呈现?

回答

1

你解决这个问题?我很好奇,如果你只是得到返回的块中的最后一个声明。您是否尝试过更改f.text_field/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