2011-10-17 86 views
3

我试图用Formtastic安装jQuery UI datepicker。我跟着http://blog.brzezinka.eu/webmaster-tips/ruby/ruby-on-rails-formtastic-jquery-ui-datepicker所以我:Ruby on Rails + Formtastic + jQuery UI datepicker

  1. 加入jQuery用户界面(confimed它与其他元素的作品)
  2. 安装Formtastic 2.0.2(confimed它与其他元素的作品)
  3. 的application.js调整
  4. 调整Formtastic.rb作为教程和评论
  5. 更改视图

我不断收到“Formtastic ::ü描述nknownInputError'<%= f.input:dtstart,:as =>:datepicker%>。我用Google搜索了这个错误,但找不到找到哪个方向的线索。这里有人有想法吗?我在轨道上3.0.3

回答

8

如果您使用的是:as => :datepicker,则必须为其创建自定义输入。

由于文档建议,创建app/inputs一个新的文件名为date_picker_input.rb

class DatePickerInput < Formtastic::Inputs::StringInput 
    def input_html_options 
    super.merge(:class => "datePicker") 
    end 
end 

所有你需要做的是触发JQuery的UI插件在application.js

$('.datePicker').datepicker(); 

如果你不”不想创建自定义输入,您可以直接添加类如下:

<%= f.input :date, :input_html => { :class => 'datePicker'} %> 
0

又一次,从原来的帖子一个遥远的答案。但事实上,你最终在这里寻找如何使用Formtastic 3.1和Rails 4来完成这个工作(除此之外可以工作,但未经测试),all I did was look at how ActiveAdmin implements theirs.使用gemfile中的formtastic gem并安装,你可以将自己的as: :datepicker功能添加到由Formtastic by following the pattern they describe in their documentation使用的input方法。

简单地说,创建下面的文件/目录(如果该目录不存在),并简单地补充一点:

# <your app>/app/inputs/datepicker_input.rb 
class DatepickerInput < ::Formtastic::Inputs::StringInput 
    def input_html_options 
     super.tap do |options| 
     options[:class] = [options[:class], "datepicker"].compact.join(' ') 
     options[:data] ||= {} 
     options[:data].merge! datepicker_options 
     end 
    end 

    private 
    def datepicker_options 
    options = self.options.fetch(:datepicker_options, {}) 
    options = Hash[options.map{ |k, v| [k.to_s.camelcase(:lower), v] }] 
    { datepicker_options: options } 
    end 
end