0

Ich habe eine Events app in Rails 5 und ich versuche, ein RSVP-System zu bauen.Erstellen eines RSVP-Systems in Rails mit has_many, durch

Die Funktionalität, die ich versuche zu erstellen, ist, dass ein Benutzer auf die Ereignisseite zeigen kann und auf eine 'rsvp' Schaltfläche klickt. Dieser Benutzer wird dann auf der Seite "Ereignisse anzeigen" unter "Teilnehmer an diesem Ereignis" angezeigt. Darüber hinaus wird das Ereignis auch auf der Senderseite des Benutzers angezeigt - "dieser Benutzer nimmt an den folgenden Ereignissen teil".

Ich bin ziemlich neu bei Rails und ich bin nicht wirklich sicher, wie man mit der rsvp-Schaltfläche funktioniert. Dies ist mein Code so weit:

user.rb

class User < ApplicationRecord 
... 
    has_many :attendances 
    has_many :events, through: :attendances 
... 
end 

event.rb

class Event < ApplicationRecord 

    has_many :attendances 
    has_many :users, through: :attendances 

end 

attendance.rb

class Attendance < ApplicationRecord 
    belongs_to :user 
    belongs_to :event 
end 

routes.rb

Rails.application.routes.draw do 
    root 'events#index' 

    resources :events do 
    resources :users 
    end 

    resources :users  
end 

Und das ist die Form auf die Ereignisse zeigen Seite, wo ich versuche, ein Benutzer auf das Ereignis

show.html.erb hinzufügen -

Veranstaltungen
<%= form_for([@event, @event.users.build] do |f| %> 
    <%= f.hidden_field :user_id, value: current_user.id %> 
    <%= f.submit "RSVP", class: "btn btn-default" %> 
<% end %> 

Bitte lassen Sie mich wissen, wenn Sie eine zusätzliche Code-Buchung benötigen.

Antwort

0

von Aktion Ihrer Steuerung finden das Ereignis und und den Benutzer in die Teilnahme einfach wie

event = Event.find_by_id(params[:event_id]) 
user = User.find_by_id(params[:user_id]) 
attendance= event.attendances.create(user_id=>user.id) 

und fügen Sie, wenn Sie die Benutzer wissen wollen, wer für den Fall, gehen Sie finden wie:

users = event.users 
+0

Im 'EventsController'? Ist das auch für die 'create' Aktion? – BillyBib

+1

Eigentlich sollte dies in der Erstellung sein, Aktion ist, wo Sie den Code von Join das Ereignis für Benutzer hinzufügen möchten –