Ruby on rails Rails中的自定义表单元素
因此,我是Rails的新手,我正在尝试找出添加自定义表单元素的规范方法是什么。目前我做这件事的方式非常糟糕Ruby on rails Rails中的自定义表单元素,ruby-on-rails,monkeypatching,Ruby On Rails,Monkeypatching,因此,我是Rails的新手,我正在尝试找出添加自定义表单元素的规范方法是什么。目前我做这件事的方式非常糟糕 module ActionView module Helpers module FormOptionsHelper def some_new_field(object, method, options = {}, html_options = {}) #code code end end class FormBuild
module ActionView
module Helpers
module FormOptionsHelper
def some_new_field(object, method, options = {}, html_options = {})
#code code
end
end
class FormBuilder
def contract_year_select(method, options = {}, html_options = {})
@template.some_new_field(@object_name, method, objectify_options(options), @default_options.merge(html_options))
end
end
end
end
然而,我看到了这一点
class Forms::ApplicationFormBuilder < ActionView::Helpers::FormBuilder
Forms::ApplicationHelper.instance_methods.each do |selector|
src = <<-end_src
def #{selector}(method, options = {})
@template.send(#{selector.inspect}, @object_name, method, objectify_options(options))
end
end_src
class_eval src, __FILE__, __LINE__
end
private
def objectify_options(options)
@default_options.merge(options.merge(:object => @object))
end
end
class Forms::ApplicationFormBuilder
首先,作为rails的新手,我建议使用Formtastic gem。
V是rails中被滥用和忽视的MVC部分
Formtastic经过了很好的测试,并支持Rails 3
使用Formtastic,您可以创建自定义元素来扩展它的brilliant类,并获得除简单的字段显示之外的所有其他好处
第二,扩大课程范围是绝对可以接受的。我更喜欢模块方法,因为它更容易查看。比如说:
module Forms::ApplicationFormBuilder
class WhateverYourExtending
def some_special_method(stuff)
# all kinds of special stuff here
end
end
end
但我几乎不知道我在说什么。。。这东西就在我理解的边缘
刚才看到你在谈论表单,我喜欢Formtastic 这里有两个部分:
首先,作为rails的新手,我建议使用Formtastic gem。
V是rails中被滥用和忽视的MVC部分
Formtastic经过了很好的测试,并支持Rails 3
使用Formtastic,您可以创建自定义元素来扩展它的brilliant类,并获得除简单的字段显示之外的所有其他好处
第二,扩大课程范围是绝对可以接受的。我更喜欢模块方法,因为它更容易查看。比如说:
module Forms::ApplicationFormBuilder
class WhateverYourExtending
def some_special_method(stuff)
# all kinds of special stuff here
end
end
end
但我几乎不知道我在说什么。。。这东西就在我理解的边缘
刚才看到你在谈论表单,我喜欢Formtastic 我第一次看到鸭子出击这个词。我喜欢!来自帕特里克·尤因(Patrick Ewing)的一句话:“嗯,我完全被亚当说服了,这个想法是,如果它走路像鸭子,说话像鸭子,那它就是鸭子,对吧?所以如果这只鸭子没有给你你想要的噪音,你就必须打那只鸭子,直到它恢复你所期望的。”我第一次看到鸭子出击这个词。我喜欢!来自帕特里克·尤因(Patrick Ewing)的一句话:“嗯,我完全被亚当说服了,这个想法是,如果它走路像鸭子,说话像鸭子,那它就是鸭子,对吧?所以如果这只鸭子没有给你你想要的噪音,你就必须打那只鸭子,直到它恢复你所期望的。”