Nella pagina dei miei pagamenti ci sono alcune variabili come card_number che voglio passare dalla vista al modello ma non voglio memorizzarle nel db. Posso solito facilmente raggiungere questo semplicemente usando attr_accessor ma in questo caso il modello viene passato in params attraverso accepts_nested_attributes_for e per qualche motivo i params non vengono passati attraverso:attr_accessor non accessibile in accept_nested_attributes_for
in User.rb ho
has_many :credit_cards
accepts_nested_attributes_for :credit_cards
nel file vista Ho un campo formato nidificato, qualcosa come:
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>
ora di nuovo in credit_card.rb ho:
attr_accessor :test
before_create :show_me_test_param
private
def show_me_test_param
raise "#{test}"
end
Ora la cosa strana è che quando provo a salvare un record, restituisce semplicemente un'eccezione vuota. Il param non sembra essere passato da User a CreditCard attraverso accept_nested_attributes_for?
Il param viene passata in è:
{"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"}}}
Qualcuno sa che cosa sta succedendo? Accept_nested_attributes_for funziona con attr_accessor?
Hai provato il debug nel controller per vedere se l'hash params è quello che si pensa che dovrebbe? –
hey sì, ho funzionato se posto il campo sul modello principale e lo faccio lì. Sembra che semplicemente non funzioni sotto accept_nested ma sicuramente se questo è il caso allora altri avrebbero notato che anche – Nick
Che aspetto ha l'hash params? Potresti per favore pubblicare l'hash dei parametri come visto dal controller utente? –