我想通过创建一个新的form_tag在表单中创建一个表。 ApplicationHelper中的以下代码失败:
module ApplicationHelper
class TabularFormBuilder < ActionView::Helpers::FormBuilder
# ... code to insert <tr> tags </tr>
end
def tabular_form_for(name, object = nil, options = nil, &proc)
concat("<table>", proc.binding)
form_for(name,
object,
(options||{}).merge(:builder => TabularFormBuilder),
&proc)
concat("</table>", proc.binding)
end
end
我使用的视图是:
<h1>New project</h1>
<% tabular_form_for :project, :builder => ApplicationHelper::TabularFormBuilder do |f| %>
<%= f.error_messages %>
<%= f.text_field :name %>
<%= f.text_area :description %>
<%= f.text_field :location %>
<%= f.submit 'Create' %>
<% end %>
我得到的错误是:
Projects#new中的NoMethodError 显示第5行引发的app / views / projects / new.html.erb: {:builder =&gt; ApplicationHelper :: TabularFormBuilder}的未定义方法`errors':哈希
如何使这个自定义标记有效?
答案 0 :(得分:0)
这是逐字发布的吗?因为你的第二个块需要在结束end
标记内才能访问FormBuilder类吗?
我发现以下教程可能有所帮助: http://ramblingsonrails.com/how-to-make-a-custom-form-builder-in-rails