Question

Sur ma page de paiement il y a certaines variables telles que card_number que je veux passer de la vue du modèle, mais je ne veux pas les stocker dans la db. Je peux habituellement obtenir facilement cela en utilisant simplement attr_accessor mais dans ce cas, le modèle est passé à travers params accepts_nested_attributes_for et pour une raison quelconque les params ne sont pas passés par:

User.rb j'ai

  has_many :credit_cards

  accepts_nested_attributes_for :credit_cards

dans le fichier de vue que j'ai un champ de formulaire imbriqué, quelque chose comme:

  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>

maintenant de retour dans credit_card.rb j'ai:

attr_accessor :test

before_create :show_me_test_param

private

def show_me_test_param
  raise "#{test}"
end

Maintenant, la chose étrange est que lorsque je tente de sauvegarder un enregistrement, il retourne simplement une exception vide. PARAM ne semble pas avoir été passé à travers d'un utilisateur à CreditCard par accepts_nested_attributes_for?

Le param étant transmis est:

{"email"=>"name@example.com", "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"}}}

Quelqu'un sait ce qui se passe? Est-ce que accepts_nested_attributes_for travail avec attr_accessor?

Était-ce utile?

La solution

Cela m'a foiré plusieurs fois dans le passé! Params pour les objets imbriqués viennent au contrôleur avec le model_name_attributes clé qui se transmet à la méthode nouvelle ou update_attributes du modèle dans le contrôleur.

Vous devrez ajouter à votre :credit_card_attributes attr_accessor pour permettre cette clé soit transmise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top