我已经覆盖了标准的Rails FormHelper,以便在我们(几乎基于Bootstrap的)格式(http://www.likeawritingdesk.com/posts/very-custom-form-builders-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
渲染的内容包括select标记,但不包括文本字段标记。我怀疑这是因为ActionView现在处理块的方式,附加块的返回值而不是块中每个语句的返回值。显然,当在app中的上下文中使用时,helper方法会传递一些ERB并在该上下文中进行求值。
答案 0 :(得分: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