为什么代码没有出现在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的注意事项:
它迭代输出字段的用户订单,因此如果用户没有订单,它将不会输出订单字段