Devise, simple_form i walidacja

Witam

Jest jakiś przyjemny sposób, aby zmusić simple_form_for do działania z nested forms. Konkretnie myśle tutaj o wyświetlaniu errorów, ponieważ nested form ma nazwy pól typu

 name="parentClass[childClass_attributes][attributeName]"

natomiast simple_form_for chciałby

 name="parentClass[childClass][attributeName]"

Pozdrawiam ! :slight_smile:

form_for @user do |f| f.simple_fields_for :posts do |posts_form| # Here you have all simple_form methods available posts_form.input :title end end
masz to ładnie opisane pod tym adresem:

Nie mam problemu z nested form, tylko z wyswietleniem dla niego errorów. Wszystko mi śmiga tylko po wprowadzeniu niepoprawnych danych nie wypluwa mi errorów, bo o ile dobrze myślę dodaje mi do nazwy inputa string “_attributes”.

Kombinowałem, także z :error_html i :input_html

Pozdrawiam

Problem prawdopodobnie nie tkwi w nazwach pól, tylko w przekazywaniu obiektu. Pokaż raczej kod samej formy i jeśli to ma związek controllera.

Relacja modeli:

:user has_one :card :card belongs_to :user
Korzystam z devise’a i na swoje potrzeby nadpisałem nieco kontroller Devise::RegistrationsController < DeviseController

def build_resource(hash=nil) hash ||= params[resource_name] || {} self.resource = resource_class.new_with_session(hash, session) self.build_card # dodane przeze mnie end
Mój widok:

<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name),:html => { :class => 'well' }, :defaults => { :input_html => { :class => 'input-medium' }, :label => false }) do |f| %> ... <%= f.simple_fields_for(:card_attributes, :defaults => { :input_html => { :class => 'input-small' }, :label => false}) do |card| %> ... <% end %> <% end %>
Model User (usunąłem niektóre linijki, aby skupić się na najbardziej istotnych rzeczach):

[code]has_one :card, :dependent => :destroy, :validate => true

accepts_nested_attributes_for :card

attr_accessible :card_attributes, :gg,:country, :email, :name, :surname, :birthdate, :city, :street, :house, :flat, :zipcode, :recommendation, :password, :password_confirmation, :remember_me[/code]
Model Card:

[code] belongs_to :user

validates :nickname, :presence => true[/code]

Zrób:

f.simple_fields_for(:card_attributes, resource.card, :defaults => { :input_html => { :class => 'input-small' },  :label => false}) do |card| %>

Fantastycznie :slight_smile: