En mi página de pagos hay ciertas variables como card_number que quiero pasar de la Vista al Modelo pero no quiero almacenarlas en el db. Por lo general puede conseguir fácilmente este por el simple uso attr_accessor pero en este caso se está pasando en el modelo params a través accepts_nested_attributes_for y por alguna razón los parametros no se están pasando a través de:attr_accessor no accesible en accept_nested_attributes_for
en User.rb tengo
has_many :credit_cards
accepts_nested_attributes_for :credit_cards
en el archivo de vista que tengo un campo de formulario anidado, algo así como:
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>
ahora de nuevo en credit_card.rb que tengo:
attr_accessor :test
before_create :show_me_test_param
private
def show_me_test_param
raise "#{test}"
end
Ahora, lo extraño es que cuando intento guardar un registro, simplemente devuelve una excepción vacía. El param no parece haber pasado de usuario a tarjeta de crédito a través de accept_nested_attributes_for?
El parámetro que se pasa 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"}}}
¿Alguien sabe qué se está encendiendo? Does accepts_nested_attributes_for work with attr_accessor?
¿Has probado la depuración en el controlador para ver si el hash params tiene lo que usted piensa que debería? –
hey sí, funciona, si coloco el campo en el modelo principal y lo hago allí. Parece que simplemente no funciona bajo accept_nested, pero seguramente si ese es el caso, entonces otros habrían notado que también – Nick
¿Cómo se ve el hash de params? ¿Podría publicar el hash de params visto por el controlador de usuario? –