/ / Pomoc so združením koľajníc - ruby-on-rails, rubín, model, asociácie

Pomoc so združením železníc - rubínové železnice, rubínové modely, asociácie

Dobre, chlapci, takže robím plánovač.

Takže zatiaľ mám dva stoly, Relácie s „title: string“ a „description: text“ a tiež mám Zobraziť čas; s „show_id: integer“, „day: string“ a „show_time: time“.

Urobil som has_many a Patrí_to, úprimne neviem, odkiaľ ísť ďalej,

Chcem, aby používateľ mohol pridávať časy pri vytváraní novej relácie. Čo by som robil? Pozeral som sa na niektoré dokumentácie združení železníc, zdá sa, že by som vytvoril niečo ako,

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

Všimnite si, že som uviedol iba DEŇ a ČAS, pretože tiež úprimne neviem, ako tieto údaje načítam.

odpovede:

2 pre odpoveď č. 1

Skutočne to záleží na vašom rozhraní. Ale pre zjednodušenie predpokladajme, že ste poskytli dve výberové políčka pre výber dňa a času, a musíte ich pridať ShowTime jeden za druhým.

A predpokladajme, že máte oddychové zdroje:

map.resources :shows do |show|
show.resources :show_times
end

Formulár: (vzhľadom na už vytvorený objekt @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 %>

Mali by ste poskytnúť najlepší spôsob, ako vygenerovať day & show_time polia. Majú nasledujúcu štruktúru:

[["Text", "value"], ["Text", "value"]]

ktorý vytvorí niečo ako:

<option value="value">Text</option>

Po odoslaní formulára vo vašej akcii vytvorenia:

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