导轨3中的字段未在内部显示显示元素

问题描述

| 我有一个名为Order的模型,另一个有名为Member的模型,当我尝试在Orders视图中显示Members模型的字段时,甚至在使用fields_for标记时也没有显示。这是我的代码的样子。 订单模型
class Order < ActiveRecord::Base
  has_many :members 
end
会员模型
class Member < ActiveRecord::Base
  belongs_to :order
end
订单控制器
class OrdersController < ApplicationController

  def new
    @order = Order.new
    3.times { @order.members.build }
    @title = \"Order Form\"
  end

  def create
    @order = Order.new params[:order]
    if @order.save 
      flash[:notice] = \"Your order has been created\"
      redirect_to orders_path
    else
      @title = \"Order Form\"
      render \'new\'
    end
  end 
end
问题在我的订单视图中:
<% for member in @order.members %>
  This displays 3 times but the information below doesn\'t
  <% fields_for \"...\",member do |member_form| %>
    <p>
      Name: <%= member_form.text_field :name %>
    </p>
  <% end %>
<% end %>
出于某种奇怪的原因,标记字段中的信息甚至不会显示一次。我想念什么吗? 如果您发现我做错了什么,请问给我解释一下,因为我是新手。 提前致谢!     

解决方法

        为集合中的fields_for调用提供的块将针对集合中的每个实例重复执行,本质上创建了自己的循环,因此您实际上并不需要为@ order.members \中的成员编写自己的显式循环”。此外,您可以利用nested_attributes功能直接通过@ order.save保存关联成员:
class Order < ActiveRecord::Base
  has_many :members 
  accepts_nested_attributes_for :members
end

class Member < ActiveRecord::Base
  belongs_to :order
end
在视图中:
<%= form_for @order do |order_form| %>
  ...
  <%= order_form.fields_for :members do |member_form| %>
    Name: <%= member_form.text_field :name %>
  <% end %>
<% end %>
而且我认为您的控制器创建方法应该可以正常使用。 有关fields_for,请参阅API文档,尤其是“一对多”小节。     ,        我认为您只需要摆脱对
fields_for
的调用中的
\"...\",
,因为字段期望一个对象。 尝试:
<% fields_for member do |member_form| %>