0

あるモデル (「リクエスト」) が別のモデル (「オーダー」) にネストされたフォームを持つサイトを作成しようとしています。具体的には、注文/新規ページに、ユーザーが入力して送信できるリクエストで構成されたフォームを作成して、作成された注文にすべて関連付けられるようにしたいと考えています。

ここの誰かの提案について、私はトピック (#196) に関する Railscast を調べましたが、理解できない問題に遭遇したので、質問することにしました。問題は、彼の指示に従っているのに、リクエスト フォームが表示されないことです。ただし、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 %>

そして、これが2つのモデルの私のコードです。最初に注文してください:

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

ヘルプ?私はこれに非常に混乱しています。問題は「ビルダー」に関係しているのではないかと推測していますが、私はこれが初めてで、1時間ほどいじってもあまり効果がありませんでした.

どんな助けにも本当に感謝します。(また、あとがきとして。明日これを見るために、あきらめて寝ます。それまでに質問をフォローアップできなかったらごめんなさい)。

ありがとう!

4

1 に答える 1

1

ここに 2 つの間違いがあります。

ビューで、次を置き換えます。

<% 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-08-31T07:19:32.443 に答える