1

単純なクエリのように見えるものがあります。単一のモデルに基づいて複数のレコードを受け入れるビューを作成する必要があります。私の場合、モデルはProjectであり、1つの外部キー(人)と2つのフィールドの時間、役割があります。5つの役割を挿入するためのビュー(フォーム)を作成する必要があります。

<%= form_for(@project) do |f| %>
 <% 5.times do |index|%>
  <div class="field">
    <%= f.label :position %><br />
    <%= f.text_field "fields[#{index}][stime]" %>
  </div>

 <% end %>
 <div class="actions">
     <%= f.submit %>
 </div>  
<% end %>

エラーメッセージが表示されます:未定義のメソッド `fields [0] [stime] '

ネストされたモデルのレールキャストは私が必要としているものではないと思います。

これを作成するにはどうすればよいですか?

編集:プロジェクトモデルコードは以下のとおりです。

class Project < ActiveRecord::Base
   belongs_to :person
   attr_accessible :role, :stime
end

新しいメソッドのProjects_Controllerコードは次のとおりです。

def new
 @project = Project.new
end
4

1 に答える 1

1

あなたは1対多の関係を築くことを計画しているようです(Product has_many :roles)。

ここにいくつかのアドバイスがあります。

まず、accepts_nested_attributes_forメソッドを見てください。一括作成を実行できるようにするには、モデルに追加する必要があります。

次に、fields_forは、ネストされたフォームを設計するために必要なものです。

Product has_many :line_items簡単なケースの大量作成の例をいくつか示します。

<%= form_for @product do |f| %>
    <%= f.fields_for :line_items, [LineItem.new]*5 do |li_fields| %>
      <%= li_fields.text_field :quantity %>
      <%= li_fields.text_field :price %>
      <br>
    <% end %>
  <%= f.submit "Create line items" %>
<% end %>

必要なのは、コントローラーに次のようなものを書き込むことだけです。

@product.update_attributes params[:product]

と5line_itemsが同時に作成されます。

ホワイトリストに登録することを忘れないでください(ログで確認してください)。しかし、一括割り当てエラーが発生した場合は、とにかくそれを行うと思います:)association_attributesparams

お役に立てば幸いです。

于 2012-12-01T11:42:44.220 に答える