我正在尝试将内容标记嵌套到自定义帮助器中,以创建如下内容:
<div class="field">
<label>A Label</label>
<input class="medium new_value" size="20" type="text" name="value_name" />
</div>
Run Code Online (Sandbox Code Playgroud)
请注意,输入与表单无关,它将通过javascript保存.
这是帮手(它会做更多然后只显示html):
module InputHelper
def editable_input(label,name)
content_tag :div, :class => "field" do
content_tag :label,label
text_field_tag name,'', :class => 'medium new_value'
end
end
end
<%= editable_input 'Year Founded', 'companyStartDate' %>
Run Code Online (Sandbox Code Playgroud)
但是,当我调用帮助程序时,不显示标签,只显示输入.如果它注释掉text_field_tag,则显示标签.
谢谢!
我试图通过将一些逻辑移入FormBuilder来干掉一些代码.在阅读有关如何选择和替代表单构建器的文档后,对我来说逻辑解决方案似乎是这样的.
在视图中
<% form_for @event, :builder => TestFormBuilder do |f| %>
<%= f.test %>
<%= f.submit 'Update' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后在app/helpers/application_helper.rb中
module ApplicationHelper
class TestFormBuilder < ActionView::Helpers::FormBuilder
def test
puts 'apa'
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是,这在"form_for"中给出了一个错误
uninitialized constant ActionView::Base::CompiledTemplates::TestFormBuilder
Run Code Online (Sandbox Code Playgroud)
我在哪里做错了?