嵌套表单:未允许的参数

时间:2016-01-11 19:53:19

标签: ruby-on-rails nested-forms

所以我是Rails的新手,我一直在尝试构建一个嵌套的表单。我遇到了很多麻烦,似乎无法让它发挥作用..我在youtube上观看了多个视频,但我似乎无法找到我做的不同。为了我试图建立一个,我有一个产品,有许多买家,但买家只属于一个产品。 (假设您只能购买一件产品......)。当我提交表单时,我收到一个错误,我可以在服务器日志中看到:“未经许可的参数:买方”我觉得我已经尝试了所有的东西......如果有人可能,我会很高兴告诉我发生了什么事。非常感谢

我已按照Rails指南将以下内容添加到我的模型中:

<script>
    $('#numberOfAdults').change(function() {
        var val1 = this.value;
        var val2 = $('#numberOfAdults option:selected').val();
        alert(val1 + " - " + val2);
    });

产品总监中的强大参数:

class Product < ActiveRecord::Base
  has_many :orders
  has_many :buyers
  accepts_nested_attributes_for :buyers          
end


class Buyer < ActiveRecord::Base
 belongs_to :product                        
end

产品控制器:

  def product_params
   params.require(:product).permit(:name, :description, :image_url, :color, :adult, buyers_attributes: [:name, :age, :product_id])
  end

然后是表格: Form (抱歉,这里插入代码时遇到重大问题)

最后这是我的两个表的架构:

 def new
@product = Product.new
@product.buyers.build     end 

  create_table "buyers", force: :cascade do |t|

t.string   "name"

t.integer  "age"

t.datetime "created_at", null: false

t.datetime "updated_at", null: false

t.integer  "product_id"   end

1 个答案:

答案 0 :(得分:2)

您的产品接受buyers的嵌套属性,但您只是向表单添加买方(无复数)属性。您可能需要将嵌套表单更改为

<%= f.fields_for :buyers, [@product.buyers.build] do |x| %>