Ich erstelle eine Anwendung, in der ein Benutzer Schulungen buchen kann. Ich möchte diese Anwendung den Benutzer einmal am Tag, nicht mehr buchen lassen.So erstellen Sie eine dynamische Schaltfläche zum Buchen von Schulungen
Ich versuche, eine Methode im Benutzermodell zu erstellen, das not_booked?
genannt wird, und wenn das Argument wahr ist, dann lassen Sie den Benutzer buchen, sonst unbook.
Dies funktioniert nicht in meiner Anwendung und ich würde gerne wissen, warum und wie es zu beheben.
User-Modell:
class User < ApplicationRecord
has_many :trainings, through: :bookings
has_many :bookings
def not_booked?(booked)
booked = self.bookings(@training)
booked = true
end
.
.
.
end
Trainings zeigen Ansicht:
<div class="row">
<section>
<h1>
HOUR: <%= @training.hour %>
</h1>
</section>
<section>
<h1>
SLOTS: <%= @training.left_slots %>
</h1>
</section>
<center>
<%= render 'bookings/booking_form' if logged_in? %>
<%= render 'bookings/index_bookings' if logged_in? %>
</center>
Und die booking_form.html.erb Ansicht ist:
<% unless current_user?(@user) %>
<% if current_user.not_booked?(@training) %>
<%= link_to "Book", new_training_booking_path(@training), class: "btn btn-primary" %>
<% else %>
<% @bookings.each do |booking| %>
<%= link_to "Unbook", training_booking_path(booking.training, booking), method: :delete, data: { confirm: 'Are you certain you want to delete this?' }, class: "btn btn-primary" %>
<% end %>
<% end %>
<% end %>
Als ich die Reserve tun, wenn ich versuche es noch einmal, aber ich möchte nicht, dass der Benutzer mehr als ein Buch macht.
Vielleicht kann ich nicht den Buchungsstatus für den Benutzer auf True festlegen. Ich würde gerne wissen, wie ich es machen kann.
Bitte reduzieren Sie Ihren Code auf den Par ts relevant für die Frage. Der Rest lenkt nur ab. – kaikuchn
fertig! bearbeitet! und Entschuldigung. –
Ihre aktuelle Implementierung von 'not_booked?' Macht nichts als wahr zurück. Was auch immer Sie in die Methode "not_booked?" Eingeben, wird als "booking" bezeichnet. Sie leiten dann jedoch sofort eine lokale Variable mit dem gleichen Namen weiter, und damit ist das Argument, auf das Sie die Methode angewendet haben, nicht mehr zugänglich Sie. Woher kommt '' training'' auch im Modell? Wolltest du das vielleicht als Argument durchgehen? – kaikuchn