Ruby on rails Can';t以多步骤形式分配受保护的属性
我在做一件我认为很简单的事情,结果却很复杂。我按照这个步骤创建了一个多步骤表单。现在,我试图在Ruby on rails Can';t以多步骤形式分配受保护的属性,ruby-on-rails,nested-forms,nested-attributes,Ruby On Rails,Nested Forms,Nested Attributes,我在做一件我认为很简单的事情,结果却很复杂。我按照这个步骤创建了一个多步骤表单。现在,我试图在Order视图中嵌套一个表单,以创建一个父Customer,如果其中还没有父Customer(请参见问题) 基本上,我希望创建一个客户来拥有一个订单,如果他们还不存在的话。我走错方向了吗 目前,我得到 无法批量分配受保护的属性:客户\u属性 当我有订单时,属于:客户。但对我来说这似乎最符合逻辑?我已经把代码放在下面了 客户模式: class Customer < ActiveRecord::Bas
Order
视图中嵌套一个表单,以创建一个父Customer
,如果其中还没有父Customer(请参见问题)
基本上,我希望创建一个客户来拥有一个订单,如果他们还不存在的话。我走错方向了吗
目前,我得到
无法批量分配受保护的属性:客户\u属性
当我有订单时,属于:客户
。但对我来说这似乎最符合逻辑?我已经把代码放在下面了
客户模式:
class Customer < ActiveRecord::Base
attr_accessible :address_1, :address_2, :email, :name, :phone, :user_id
belongs_to :user
end
视图/订单/新
%h1 New order
= form_for(@order) do |f|
- if @order.errors.any?
#error_explanation
%h2
= pluralize(@order.errors.count, "error")
prohibited this order from being saved:
%ul
- @order.errors.full_messages.each do |msg|
%li= msg
= render "#{@order.current_step}_step", :f => f
= f.submit "Continue"
= f.submit "Back", :name => "back_button" unless @order.first_step?
我试图嵌套窗体的局部视图:
.field
= f.label :quantity
= f.text_field :quantity
%h3
Customer details
=f.fields_for :customer do |builder|
=builder.label :name
=builder.text_field :name
=builder.label :email
=builder.text_field :email
希望这就是一切。我以前做过嵌套表单,但从未与多步骤表单结合使用。非常感谢您的帮助。是的,您需要这两种帮助:
attr_accessible :customer_attributes, :customer_id, :format, :message, :phone, :quantity
accepts_nested_attributes_for :customer
attr\u accessible
告诉Rails哪些属性是允许的
接受\u嵌套的\u属性\u for
告诉rails将属性委托给其他类。可能重复是的,对不起-我认为这与多步骤表单有关。不是,所以我接受了下面的答案。
.field
= f.label :quantity
= f.text_field :quantity
%h3
Customer details
=f.fields_for :customer do |builder|
=builder.label :name
=builder.text_field :name
=builder.label :email
=builder.text_field :email
attr_accessible :customer_attributes, :customer_id, :format, :message, :phone, :quantity
accepts_nested_attributes_for :customer