2010-09-30 13 views
0

Je cours dans un petit problème (débutant).commentaires ne pas enregistrer post_id

J'ai 2 modèles: question & reviews.

avis schéma: question_id, user_id, note, les commentaires

Sur la vue 'show', j'ai intégré le formulaire ci-dessous (formtastic):

- semantic_form_for @question.reviews.build do |f| 
    = f.error_messages 
    = f.input :rating 
    = f.input :comments 
    = f.buttons 

crée mon contrôleur critiques action ressemble Cependant, maintenant, il ne semble tout simplement pas enregistrer l'identifiant de la question dans le champ question_id (0). Il enregistre bien l'user_id.

Est-ce que quelqu'un a une idée de ce que je fais mal? Si vous avez besoin de journaux, faites le moi savoir! Merci d'avance

Répondre

1

Vous devez ajouter un champ caché pour l'identifiant de la question sur votre formulaire. quelque chose comme

f.hidden_field :question_id 

Pour être plus précis, user_id est sauvé parce que vous lui attribuer dans le contrôleur. Vous devez passer le question_id du formulaire au contrôleur pour qu'il soit également enregistré.

+0

thx, j'ai pensé que cela pourrait être une solution oui. Mais, ne peut-il pas simplement changer la valeur du champ afin qu'il change la valeur d'une autre question? Je pensais que l'ajouter dans le contrôleur serait plus sûr? Ou n'est-ce pas un facteur? Merci encore! –

+0

Vous avez raison de ne pas faire confiance à tout ce que vous ne voulez pas que l'utilisateur change potentiellement. Vous devriez toujours faire une sorte de vérification des permissions pour voir si l'utilisateur est capable de faire ce qu'il essaie de faire. Idéalement, cette responsabilité est encapsulée dans un module d'autorisation (c.-à-d. Cancan) plutôt que d'essayer de l'appliquer dans l'action du contrôleur. Cela signifie que vous devriez avoir un filtre avant qui n'a pas les permissions * ou * devrait échouer s'ils n'ont pas les permissions. – semanticart