這真的取決於你的界面。但爲了簡單起見,我們假設您提供了兩個選擇日期和時間的選擇框,並且必須逐個添加ShowTime
。
而且假設你有其他資源:
map.resources :shows do |show|
show.resources :show_times
end
形式:(給已經創建了一個@show對象)
<% form_for @show_time, :url => show_show_time_path(@show) do |form| %>
<%= form.label :day %>: <%= form.select :day, [["Mon", "mon"], ["Tue", "tue"]], {} %>
<%= form.label :show_time %>: <%= form.select :show_time, [["Slot 1", "09:00"]], {} %>
<% end %>
你應該提供生成day
& show_time
陣列的最佳途徑。它們的結構如下:
[["Text", "value"], ["Text", "value"]]
這將產生類似:
<option value="value">Text</option>
形式提交後,在您創建行動:
def create
@show = Show.find params[:show_id] # this params[:show_id] is from the rest resource's path
@show_time = @show.show_times.build(params[:show_time]) # this params[:show_time] is from the form you submitted
if @show_time.save
flash[:notice] = "Success"
redirect_to show_show_time_path(@show, @show_time)
else
flash[:notice] = "Failed"
render :action => "new"
end
end
嘿彼得,謝謝你的幫助。我想我需要閱讀更多的教程,因爲我不明白你說的一半。我沒有休息資源,到目前爲止,我只做了show&showtime scaffolds,遷移,然後添加了「has_many」和「belongs_to」。 – Rickmasta 2010-09-25 02:01:30
如果你打開'routes.rb',你會看到兩個資源'map.resources:shows'和'map.resources:showtimes'。腳手架也使用平靜的資源。但恐怕它不會爲您生成嵌套資源。是這樣嗎? – PeterWong 2010-09-25 15:15:38