在我的Rails应用程序中,我使用这个帮助器方法创建一个带有隐藏字段的日期字段:
module FormatHelper
def datepicker_field(object, date)
object.text_field(:date_selector, :class => "datepicker") +
object.hidden_field(date.to_sym, :id => "real_date")
end
end
在我的表格中,我这样使用它:
<%= datepicker_field(f, :date) %>
如果我能做到的话,它会更优雅(和我的其他表单元素更相似):
<%= f.datepicker_field(:date) %>
(f
为form_for
区块)
如何在Rails中完成?
感谢您的任何建议。
答案 0 :(得分:2)
多年前,我在Rails 3.1应用程序中做了类似的事情:
# in config/initializers/form_helpers.rb
module ActionView
module Helpers
module FormHelper
def datepicker(object_name, method)
text_field(:date_selector, :class => "datepicker") + hidden_field(object_name, method, :id => "real_date")
end
end
class FormBuilder
def datepicker(date)
@template.datepicker(@object_name, method)
end
end
end
end
答案 1 :(得分:1)
您可以创建FormBuilder
的子类并将其传递给form_for
= form_for @user, builder: StandardFormBuilder do |f|
然后创建一个名为standard_form_builder.rb的文件并将其放在helpers文件夹中(至少这就是我所做的)
class StandardFormBuilder < ActionView::Helpers::FormBuilder
def datepicker_field(method, html_options = {}
text_field(:date_selector, :class => "datepicker") +
hidden_field(method.to_sym, :id => "real_date")
end
end
# view file
f.date_picker_field :date