为什么代码没有出现在Rails中的html?….

我不知道发生了什么……我正在尝试使用has_many关联发送hidden_​​fields,但代码不会出现在html中。

我正在发送代码。 可能会更清楚

在html.erb中:

@orders.digital_product_plan_id %> @orders.express_payer_id %> @orders.express_token %>

它正在生成这个html:

 

当我用html.erb中的“f.fields_for:order”替换“f.fields_for:orders”时,生成了这个html(我期待着类似于“orders”(之前的)版本的那个)

  

billing_fields位于此form_for中:

  registration_path(@user), html: {class: "form-horizontal", role: "form"} do |f| %> 

订单管理员:

 def new @user = current_user @orders = Order.where(:paypal_express_token => params[:token]).last @orders.get_details if ! @orders.paypal_email.blank? @orders.save! end if @user.nil? @user = User.new ... end @orders.user ||= @user end 

订单型号:

 belongs_to :user 

用户模型:

 attr_accessible ... :orders_attributes has_many :orders accepts_nested_attributes_for :orders 

我填补了…任何提示?

此问题涉及此问题的另一个方面: 如何在Rails中创建新父级与现有子级的关系

几个问题:

f.fields_for

您可能知道这一点,但您的f.fields_for调用需要包含在form_for方法中。 您的HTML单独显示它 – 如果这是设计的,您需要将它放在form_for块中


build

您的真正问题可能是缺少对关联数据的build调用:

 #app/controllers/users_controller.rb Class UsersController < ActiveRecord::Base def new @user = User.new @user.orders.build #-> this should get f.fields_for to show end end 

这是一个很好的资源,详细说明了它的工作原理

SevenSeaCat的注意事项:

它迭代输出字段的用户订单,因此如果用户没有订单,它将不会输出订单字段