我敢肯定我在想這個問題,但我似乎無法弄清楚如何簡單地創建和提交一次多個記錄。我有一個用戶模型和一個預測模型。用戶has_many預測,並且預測屬於用戶。當我訪問用戶/ 1 /預測/新的,我需要創建6條預測記錄,並立即提交他們的分貝我嵌套像這樣多個記錄提交沒有嵌套
:resources users do
:resources predictions
end
我的路線。
在我的預測控制器:
before_filter :load_user
def new
3.times { @user.predictions.build }
end
def create
@prediction = @user.predictions.new(params[:prediction])
if @prediction.save
redirect_to @user, :notice => 'Prediction added'
else
redirect_to @user, :notice => 'Unable to add'
end
end
def destroy
@prediction = @user.prediction.find(params[:id])
@prediction.destroy
redirect_to @user, :notice => "Prediction deleted"
end
private
def load_user
@user = current_user
end
在我的預測new.html.erb:
<%= form_for ([@user, @user.predictions.new]) do |f| %>
<div class="fields">
<%= f.label :position %>
<%= f.text_field :position %>
</div>
<div class="fields">
<%= f.label :athlete_id, 'Athlete'%>
<%= f.collection_select(:athlete_id, Athlete.all, :id, :name, :prompt => 'Select an athlete')%>
</div>
<div class="fields">
<%= f.label :race_id, 'Race'%>
<%= f.collection_select(:race_id, Race.upcoming, :id, :name, :prompt => 'Select a race')%>
</div>
<div class="actions"><%= f.submit %></div>
<% end %>
這說明,並提交只有一個記錄,而不是3,我想我可能要使用:accepts_nested_attributes_for,但是我不需要同時創建和更新用戶模型。現有用戶將一次創建3條記錄,用於多場比賽,因爲這是一款夢幻體育應用。
爲什麼你不想使用嵌套窗體?看起來他們完全適合你的問題。 –
我絕對可以使用它們,我想我沒有正確理解這個概念。我認爲嵌套屬性只有在您一次創建或編輯兩個模型時纔有意義。在我的情況下,用戶已經存在,我只需要爲該用戶創建3個預測並將它們提交到一起。 – jktress
ActiveRecord不應更新現有的用戶記錄,除非您對其進行更改,所以我認爲在您的案例中使用嵌套表單是完全可以接受的。您對現有用戶記錄的問題和擔憂非常敏感。 +1爲好思維 –