Usando Simple Form com Nested Form

Deixe um comentário

novembro 23, 2012 por Geisimar Rech

Uma breve introdução de como usar as duas Gems juntas.

Simple Form: Deixa o código limpo em seus forms.

Nested Form: Implementa o uso de vários Models em um único form.

Primeiramente adicione em seu Gemfile:

gem 'simple_form'
gem 'nested_form', :git => 'git://github.com/ryanb/nested_form.git

Para Rails 3.1, a única coisa que você tem a fazer é apenas chamar o arquivo js em seu application.js

//= require jquery
//= require jquery_ujs
//= require nested_form

Levamos em consideração que temos duas classes

Product e Photo onde:

class Photo
  attr_accessible :file
  mount_uploader :file, PhotoUploader

  belongs_to :product
end
class Product
  attr_accessible :name
  has_many :photos 
  accepts_nested_attributes_for :photos, reject_if: proc { |attributes| attributes['data'].blank? }, allow_destroy: true 
end

Em nosso formulário teremos o seguinte:

= simple_nested_form_for resource, :url => products_path do |f|
  = f.input :name

  - resource.photos.each do |photo|
    = f.simple_fields_for :photos, photo do |p|
      .photo
        = label_tag ''
        = image_tag photo.file
        %br/
        = label_tag ''
        = p.link_to_remove 'delete this image'
        = p.input :file_cache, :as => :hidden

  = f.simple_fields_for :photos, resource.photos.build do |p|
    = p.input :file, :as => :file
    = p.input :file_cache, :as => :hidden
    = p.link_to_remove 'remove'
  = f.link_to_add 'Adicionar', :photos

  .actions
    = f.submit 'Salvar'
    = button_tag 'Cancelar', :type => 'reset'

Saiba mais sobre as respectivas gems  em:

https://github.com/ryanb/nested_form

https://github.com/plataformatec/simple_form

Artigo original: http://hansay.com/2011/11/30/using-nested-form-with-simple-form/

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: