同じモデルのインスタンスが複数あるフォームの作成に問題があります。私のフォームはタイムシート申請用です。以下は、私が作成したいもののスクリーンショットです。 http://imageshack.us/f/541/5w3o.png/
データを格納するテーブルは project_activity と呼ばれ、次の列名が含まれています: activity_id PK、project_id、task_id、party_id、activity_hours。
以下は私のコードです。提供したスクリーンショットはコードからの出力ですが、バックエンドにレコードを保存できません。
私の意図は、ユーザーが選択したときにローカル変数に格納される 3 つのドロップダウン メニュー (パーティー、プロジェクト、タスク) を用意することです。この変数は、表示される各 activity_hour フィールドの隠しフィールド タグに取り込まれ、フォームが保存されると、7 つの project_activity レコードが同じ関係者、プロジェクト、およびタスクで作成されます。
方法がわからないため、提供されたコードでこれを試みていません。出来ますか?
<h1>Timesheet</h1>
<%= form_for(@project_activity) do |f| %>
<%= f.collection_select(:party_id, Party.all, :id, :party_name, {:prompt => params[current_party]}, {class: "span2"}) %></br>
<table class="table">
<tr>
<td><%= select_tag "project_activity[project_id]",
grouped_options_for_select(Project.for_select(@date.strftime("%Y%m%d"))),
{include_blank: true, class: "span2"} %></td>
<td><%= select_tag "project_activity[task_id]",
grouped_options_for_select(ProjectTask.for_select(@date.strftime("%Y%m%d"))),
{include_blank: true, class: "span2"} %></td>
<% form_date = @date.beginning_of_week %>
<%= (@date.beginning_of_week..@date.end_of_week).each do %>
<%= f.fields_for(@project_activity) do |builder| %>
<td>
<%= builder.number_field :activity_hours, :class => 'input-mini' %>
<%= hidden_field_tag "project_activity[activity_date]", form_date %>
<% form_date+=1 %>
</td>
<% end %>
<% end %>
<tr>
<td><%= f.submit "Save", :class => 'btn btn-primary' %></td>
</tr>
</table>
<% end %>