2017-06-13 6 views
1

J'ai eu ce travail très similaire à un autre contrôleur mais je devais changer cette relation à un autre contrôleur appelé agreements_controller. Je veux créer un a un modèle. review has one and belongs to agreements.constante non initialisée ReviewsController :: Avis

Pourquoi la ligne n'est-elle pas créée correctement?

reviews_controller:

class ReviewsController < ApplicationController 

    def create 
    @review = Reviews.create(review_params) 
    end 


    private 

    def review_params 
    params.require(:review).permit(:comment, :star, :agreement_id, :user_id, :reviser_user_id) 
    end 

end 

_form.html.erb

<%= form_for([agreement, agreement.build_review]) do |f| %> 

<% end %> 

agreement.rb

class Agreement < ActiveRecord::Base 
    has_one :review, :dependent => :destroy 
end 

review.rb

class Review < ActiveRecord::Base 
    belongs_to :agreement 
    belongs_to :reviser_user 
    belongs_to :user 
end 

J'ai essayé de trouver des exemples similaires en ligne, mais tout ce que j'ai pu trouver était des formulaires imbriqués ... Je n'ai pas besoin d'un formulaire imbriqué que je veux juste que la critique crée.

Répondre

4

Les modèles sont singuliers. Utilisation

Review.create(review_params) 
+0

Je ne dirais pas que les modèles sont singuliers autant que le modèle _his_ en particulier est singulier. Si vous regardez, son exemple de code ci-dessus prouve même que 'Review' est son nom de classe. – Pachonk

+0

Les modèles ne sont pas toujours singuliers? – gates

+0

pas toujours, mais par défaut ils le sont. Ils peuvent être générés de force au pluriel avec '--force-plural'. Dans ce cas, la "vraie" réponse est que le modèle _his_ comme indiqué ci-dessus est singulier, donc son contrôleur devrait l'appeler comme son code lit. – Pachonk