SORU
16 HAZİRAN 2009, Salı


Nasıl bir form içinde Raylar seri bir alanı düzenlemek için?

Seri hale getirilmiş bir alan olduğunu Raylar projemde veri bir model var:

class Widget < ActiveRecord::Base
  serialize :options
end

Seçenekler alanı değişken veri bilgi alabilir. Örneğin, burada armatürleri dosyadan: bir kayıt için seçenekler alanı

  options:
    query_id: 2 
    axis_y: 'percent'
    axis_x: 'text'
    units: '%'
    css_class: 'occupancy'
    dom_hook: '#average-occupancy-by-day'
    table_scale: 1

Benim sorum bir kullanıcı standart bir form görünümünde bu Bilgi düzenlemek için doğru yolu nedir?

Eğer sadece seçenekler alanı için basit bir metin alanı bir alanı kullanıyorsa, yaml dökümü temsil alacağı ve bu veri sadece bir dize olarak geri gönderildi.

Raylar bu seri karma bir alanı düzenlemek için en iyi/uygun yol nedir?

CEVAP
16 HAZİRAN 2009, Salı


Eğer seçenek tuşları önceden olacak ne biliyorsanız, onlar için özel alıcıları ve ayarlayıcıları gibi çok bildirebilirsiniz:

class Widget < ActiveRecord::Base
  serialize :options

  def self.serialized_attr_accessor(*args)
    args.each do |method_name|
      eval "
        def #{method_name}
          (self.options || {})[:#{method_name}]
        end
        def #{method_name}=(value)
          self.options ||= {}
          self.options[:#{method_name}] = value
        end
        attr_accessible :#{method_name}
      "
    end
  end

  serialized_attr_accessor :query_id, :axis_y, :axis_x, :units
end

Bu konuda güzel şey seni Raylar gibi: yardımcıları formu kullanmak için izin verir öznitelikleri gibi seçenekler dizinin bileşenleri ortaya koyar

#haml
- form_for @widget do |f|
  = f.text_field :axis_y
  = f.text_field :axis_x
  = f.text_field :unit

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013