更新:だから、私はこれを見つけました.どうやらそれがこの古いやり方がうまくいかない理由です.ActiveAdminはFormtastic 2.xを使用する必要があります. app/inputs/date_picker_input.rb
指示に従って、次のようなファイルを作成しました。
class DatePickerInput
include Formtastic::Inputs::Base
def to_html
puts "this is my datepickerinput"
end
end
そして、私のコントローラーは次のようになります。
f.input :open_date, :as => :date_picker
f.input :close_date, :as => :date_picker
しかし、今、私はこのエラーに遭遇しています:
ActionView::Template::Error (undefined method 'html_safe' for nil:NilClass):
1: render renderer_for(:edit)
何かご意見は?
フィールドで日付ピッカーを使用できるようにレンダリングしようとすると、Formtastic が日付を望ましくない形式 (Ymd h:i:s Z) に自動的にフォーマットするという問題に遭遇:as => string
しました。これを解決しようとして、私はこの解決策に出くわしました。
それは理にかなっているようで、私が扱っているのとまったく同じ問題です。しかし、私は修正を実装することができないようで、Formtastic が ActiveAdmin を通じて使用されているためではないかと考えています。だから、ここに私がやろうとしたことがあります:
コントローラーでは、メソッドを次のように変更しました。
f.input :open_date, :as => :date
私もこれを試しましたが、私の問題はこの時点に到達することさえできません:
f.input :open_date, :as => :date_input
lib/datebuilder.rb
次のコードでファイルを作成しました。
class DateBuilder < Formtastic::SemanticFormBuilder
def date_input(method, options)
current_value = @object.send(method)
html_options ||= {:value => current_value ? I18n.l (current_value) : @object.send("#{method}_before_type_cast")}
self.label(method, options.delete(:label), options.slice (:required)) +
self.send(:text_field, method, html_options)
end
end
必要に応じてフォーマットを修正できるかどうかはわかりませんが、Formtastic にこのメソッドを使用させることができれば、必要に応じて変更できると思います (現在、上記のリンクに記載されているソリューションからこれを取得しています)。
この記事では、このカスタム入力を使用するには、formtastic 初期化子に行を追加する必要があると述べています。
Formtastic::SemanticFormHelper.builder = Formtastic::DateBuilder
私はこの初期化ファイルを持っていなかったので、上記の行でconfig/initializers
それを追加しました ( config/initializers/formtastic.rb
)。私が今直面している問題は、Rails アプリを起動しようとしたときの次のエラーです。
../config/initializers/formtastic.rb:1:in '<top (required)>': uninitialized constant Formtastic::SemanticFormHelper (NameError)
代わりに、そのファイルで次の構文も試しました。
module Formtastic
module SemanticFormHelper
self.builder = DateBuilder
end
end
代わりにこのエラーが表示されます:../config/initializers/formtastic.rb:3:in '<module:SemanticFormHelper>': uninitialized constant Formtastic::SemanticFormHelper::DateBuilder (NameError)
これについて完全に間違った方法で行っている場合はお知らせください。それ以外の場合は、Formtastic でこのカスタム入力タイプを使用するためのヘルプがあればすばらしいでしょう!