好的伙计们,所以我正在制作一个调度程序。
所以到目前为止我有两张桌子, 显示“title:string”和“description:text”,我也有 开演时间; “show_id:integer”,“day:string”和“show_time:time”。
我做了has_many和belongs_to,老实说我不知道从哪里开始,
我希望用户能够在创建新节目时添加时间。我该怎么办?我正在查看一些rails协会文件,似乎我会做类似的事情,
@showtime = @shows.showtimes.create(:show_id => show.id, :day => DAY, :show_time => TIME)
注意我只放了DAY和TIME,因为我老实说也不知道我将如何获取这些数据。
答案 0 :(得分: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
&amp; 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