2016-09-30 6 views
0

私が間違っていることを理解できません。私は2つのモデルを持っています:Rails 4 Has_oneネストされたフォーム - エラーUnpermiitedパラメータ

class Product < ActiveRecord::Base 
    has_one :review, dependent: :destroy 
    accepts_nested_attributes_for :review, allow_destroy: true 
end 
class Review < ActiveRecord::Base 
    belongs_to :product 
end 

has_oneの関係があります。データベースには、レビューテーブルにproduct_id列があります。

私のコントローラは、新しい(@product = Product.new)で簡単です。編集アクションには何もありません。ここに私の強いparamsがあり、次のように

def product_params 
    params.require(:product).permit(:name, ..., review_attributes: [:id, :rating, :text, :author, :name]) 
end 

私の形式は次のとおりです。

<%= form_for(@product, :html => {multipart: true, :class => "form-horizontal"}) do |f| %> 
... 

    <%= f.fields_for :review do |ff| %> 
     <%= ff.hidden_field :author, :value => 'Yes' %> 
      <%= ff.label :rating, "Enter a Rating" %> 
      <%= ff.number_field :rating, class: "form-control input-md", min: 0, max: 5, step: 0.5 %> 
      <%= ff.label :name, "Title of Review" %> 
      <%= ff.text_field :name, class: "form-control input-md" %> 
      <%= ff.label :text, "Review Description" %> 
      <%= ff.text_area :text, class: "form-control" %> 
    <% end %> 
     <%= f.submit "Create Product", :class => 'btn btn-default btn-lg' %> 
<% end %> 

私はモデルでaccepts_nested_attributesを持っている場合、ネストされたフォームは、表示されない理由を私は理解できないかどうかI accepts_nested_attributesを必要とせず、なぜaccepts_nested_attributesを持たずフォームを送信したときに「unpermitted parameters:review」というエラーが出るのですか?どんな助けでも大歓迎です。コントローラで

+0

おそらく、あなたはビューをレンダリングする前に、コントローラにレビュー対象を構築する必要があります...あなたがそこに持っているものはすべて私には大丈夫だと思いますが、フォームがレンダリングされるときに関連するオブジェクトが見つからないと思います...本当に問題がある場合は、受け入れる答えを出しました。 – Eric

答えて

1

、そのフォームをレンダリングしている方法で審査オブジェクトを構築しよう...

def new 
    @product = Product.new 
    @product.build_review 
end 
+0

それは働いた..理由についての任意のアイデア?私はaccepts_nested_attributesがビルドの世話をすると思った? –

+0

いいえ、あなたは属性を受け入れているオブジェクトを構築する必要があります... '<%= f.fields_for:review do | ff | %> 'その行...あなたが言っているところでは、' review'オブジェクトのフィールドはここにあります。そのオブジェクトをメモリに構築しなければなりません...意味がありますか? – Eric

+0

はい。私が抱えている別の問題は、コントローラの編集アクションです。レビューオブジェクトの情報はフォームフィールドに入力されません。そこに任意のアイデア?そうではない、私のコントローラはちょうど(def edit end)です。 –

関連する問題