【问题标题】:Forms with nested models具有嵌套模型的表单
【发布时间】:2012-08-31 06:46:10
【问题描述】:

我正在尝试创建一个网站,该网站的表单具有一个模型(“请求”)嵌套在另一个模型(“订单”)中。具体来说,我希望订单/新页面有一个由用户可以填写然后提交的请求组成的表单,因此它们都与创建的订单相关联。

根据某人的建议,我查看了有关该主题的 Railscast (#196),但遇到了一个我无法弄清楚的问题,所以我想我会问。问题是,我正在按照他的指示进行操作,但请求表并没有出现。然而,与 Order 模型相关的表单字段出现了,我真的很困惑,因为我基本上是逐字复制了 Railscast。想法?

这是我的表单代码。特别是 fields_for 标记中未显示在我的网站上的部分:

<%= form_for(@order) do |f| %>
  <% if @order.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@order.errors.count, "error") %> prohibited this order from being saved:</h2>

      <ul>
      <% @order.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

    <p>
        <%= f.label :user_name %><br />
        <%= f.text_field :user_name %>
    </p>
    <p>
        <%= f.label :user_email %><br />
        <%= f.text_field :user_email %>
    </p>

<% f.fields_for :requests do |builder| %>
    <p>
        <%= builder.label :item, "Item" %><br />
        <%= builder.text_field :item %>
    </p>
    <p>
        <%= builder.label :lbs, "LBs" %> <br />
        <%= builder.text_field :lbs %>
    </p>
<% end %>

    <p><%= f.submit "Submit Order" %></p>
<% end %>

这是我的两个模型的代码,先订购:

class Order < ActiveRecord::Base
  attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone
  has_many :requests, :dependent => :destroy
  accepts_nested_attributes_for :requests
end

class Request < ActiveRecord::Base
  attr_accessible :item, :lbs, :notes, :order_id, :status
  belongs_to :order
end

最后,如果相关的话,我根据演员的建议添加到我的订单控制器创建操作中:

def new
    @order = Order.new
    3.times { @order.requests.build }

    respond_to do |format| # this part I copied from a tutorial. But when I commented it out, it didn't change anything, so I don't think this is the problem
      format.html # new.html.erb
      format.json { render json: @order }
    end
  end

帮助?我对此感到非常困惑。我猜这个问题可能与“建造者”有关,但我对此并不陌生,一个小时左右的摆弄并没有带来多少收获。

非常感谢任何帮助。 (另外,作为一个后记。我放弃并去睡觉,明天再看这个。抱歉,如果我在那之前没有跟进任何问题)。

谢谢!

【问题讨论】:

    标签: ruby-on-rails models nested-forms


    【解决方案1】:

    我发现这里有两个错误。

    在视图中,替换:

    <% f.fields_for :requests do |builder| %>
    

    与:

    <%= f.fields_for :requests do |builder| %>
    

    在您的订单模式中,替换:

    attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone
    

    与:

    attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone, :requests_attributes
    

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多