/ / Pomoc z asocjacjami rails - ruby-on-rails, ruby, model, asocjacje

Pomoc w powiązaniu szyn - ruby ​​na szynach, rubin, model, skojarzenia

Ok, więc robię plan.

Na razie mam dwa stoły, Wyświetla się z „tytułem: ciągiem” i „opisem: tekstem”, a ja też mam Czas na przedstawienie; z „show_id: integer”, „day: string” i „show_time: time”.

Zrobiłem has_many, i przynależy do, szczerze mówiąc nie wiem, dokąd mam iść dalej,

Chcę, aby użytkownik mógł dodawać godziny podczas tworzenia nowego programu. Co ja bym zrobił? Przeglądałem dokumentacje stowarzyszeń szynowych, wydaje mi się, że robiłbym coś takiego,

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

Zauważ, że wstawiam tylko DZIEŃ i CZAS, ponieważ szczerze mówiąc nie wiem, jak pobiorę te dane.

Odpowiedzi:

2 dla odpowiedzi № 1

To naprawdę zależy od twojego interfejsu. Ale dla uproszczenia załóżmy, że masz dwa pola wyboru do wyboru dnia i godziny i musisz je dodać ShowTime jeden po drugim.

I załóżmy, że masz zasoby do odpoczynku:

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

Formularz: (biorąc pod uwagę już utworzony obiekt @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 %>

Powinieneś zapewnić najlepszy sposób generowania pliku day & show_time tablice. Mają następującą strukturę:

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

który wygeneruje coś takiego:

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

Po przesłaniu formularza w akcji tworzenia:

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