2017-06-13 49 views
1

私はこれを他のコントローラと非常によく似ていましたが、この関係をagreements_controllerという別のコントローラに変更する必要がありました。私は1つのモデルを持っています。 review has one and belongs to agreements初期化されていない定数ReviewController ::レビュー

行が正しく作成されないのはなぜですか?

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 

私は同じような例をオンラインで見つけようとしましたが、入れ子になったフォームしか見つかりませんでした...入れ子になったフォームは必要ありません。

答えて

4

モデルは単数形です。使用

Review.create(review_params) 
+0

私はそのモデルが特に単数であるとは言いません。見れば、上の彼のコードサンプルは、 'Review'が彼のクラス名であることを証明します。 – Pachonk

+0

モデルは常に単数形ではありませんか? – gates

+0

は必ずしもそうではありませんが、デフォルトではそうです。それらは '--force-plural 'で強制的に複数として生成することができます。この場合、「本当の」答えは、上に示したようなモデルが特異であるため、コントローラは彼のコードが読んだときに呼び出さなければならないということです。 – Pachonk

関連する問題