J'écris un formulaire pour les utilisateurs d'enregistrer leurs produits. J'ai déjà class User has_many :products
et class Product belongs_to :user; attr_accessible :serial_number
. Donc, l'idée est que l'utilisateur entre le numéro de série dans le formulaire et j'appelle @user.products << Product.find_by_serial_number params[:serial_number]
ou somesuch.Rails form_for et text_field sans modèle attribut
Il semblait judicieux d'ajouter cela comme une action de registre à l'UsersController
:
resources :users do
member do
get 'register'
end
end
et moi avons les éléments suivants dans register.html.erb
:
5: <%= render 'shared/error_messages' %>
6:
7: <%= f.label :serial_number, "Serial number" %>
8: <%= f.text_field :serial_number %>
9:
10: <%= f.submit "Register product" %>
11: <% end %>
Cela jette l'erreur:
undefined method `serial_number' for #<User:0x000000060b1d40>
extracted source (around line #8):
...
Alors ... a) Comment arrêter cette erreur? b) Euh ... que va-t-il se passer après avoir appuyé sur le bouton Soumettre? Je suppose que ça va appeler l'action update
(qui est également utilisé par le formulaire de modification) ... dois-je faire que plus gras à traiter avec les deux possiblités? Ou faire une nouvelle action? (Si oui, comment puis-je réacheminer le formulaire pour indiquer que?) C) de gestion des erreurs (mettre dans un numéro de série valide) est mieux gérée dans le contrôleur, pas le modèle, non?
Merci.