Na stronie moich płatności znajdują się pewne zmienne, takie jak numer_artykułu, który chcę przekazać z widoku do modelu, ale nie chcę przechowywać ich w bazie danych. Zwykle mogę łatwo osiągnąć to po prostu za pomocą attr_accessor ale w tym przypadku model jest przekazywana w params poprzez accepts_nested_attributes_for iz jakiegoś powodu params nie są przekazywane poprzez:attr_accessor nie jest dostępny w accept_nested_attributes_for
w User.rb mam
has_many :credit_cards
accepts_nested_attributes_for :credit_cards
w pliku widoku mam zagnieżdżonych pole formularza, coś jak:
blah blah
<h2>Credit card</h2>
<%= f.fields_for :credit_cards do |builder| %>
<%= render "credit_card_fields", :f => builder %>
<% end %>
inside that
<p>
<%= f.label :test %><br />
<%= f.text_field :test %>
</p>
teraz z powrotem w credit_card.rb mam:
attr_accessor :test
before_create :show_me_test_param
private
def show_me_test_param
raise "#{test}"
end
Dziwne jest to, że kiedy próbuję zapisać rekord, po prostu zwraca pusty wyjątek. Wydaje się, że param nie przeszedł od użytkownika do karty kredytowej za pośrednictwem accepts_nested_attributes_for?
param były przekazywane w języku:
{"email"=>"[email protected]", "password"=>"pass123", "password_confirmation"=>"pass123", "credit_cards_attributes"=>{"0"=>{"test"=>"helllo this is the second attempt", "name_on_card"=>"first lastname", "card_number"=>"987498742897", "card_verification_value"=>"232", "expiry_date"=>"2141"}}}
Czy ktoś wie co się dzieje? Czy accept_nested_attributes_for pracy z attr_accessor?
Czy próbowałeś debugowania w sterowniku, czy hash params ma co myślisz powinien? –
hej, tak, mam, działa, jeśli umieszczę pole na modelu nadrzędnym i tam to zrobię. Wydaje się, że po prostu nie działa pod accepts_nested, ale na pewno, gdyby tak było, inni też by to zauważyli. – Nick
Jak wygląda hash params? Czy mógłbyś opublikować hash params widziany przez kontroler użytkownika? –