2010-09-24 205 views
0

好吧,所以我正在做一個調度。幫助與軌道協會

所以我有兩個表到目前爲止, 顯示「標題:字符串」和「描述:文本」,我也有 ShowTime; 「show_id:integer」,「day:string」和「show_time:time」。

我做的has_many和belongs_to的,我真的不知道從哪裏從這裏走,

我希望用戶能夠創建一個新的節目時添加的時間。我會怎麼做?我一直在尋找一些軌協會文檔,好像我將作出類似的東西,

@showtime = @shows.showtimes.create(:show_id => show.id, :day => DAY, :show_time => TIME) 

通知我把剛纔的日期和時間,因爲我也真的不知道我怎麼會取這個數據。

回答

2

這真的取決於你的界面。但爲了簡單起見,我們假設您提供了兩個選擇日期和時間的選擇框,並且必須逐個添加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 
+0

嘿彼得,謝謝你的幫助。我想我需要閱讀更多的教程,因爲我不明白你說的一半。我沒有休息資源,到目前爲止,我只做了show&showtime scaffolds,遷移,然後添加了「has_many」和「belongs_to」。 – Rickmasta 2010-09-25 02:01:30

+0

如果你打開'routes.rb',你會看到兩個資源'map.resources:shows'和'map.resources:showtimes'。腳手架也使用平靜的資源。但恐怕它不會爲您生成嵌套資源。是這樣嗎? – PeterWong 2010-09-25 15:15:38