Я нашел это мини-приложение на GIThub, которое позволяет пользователям создавать события присутствия и отмены здесь: https://github.com/ghembo/private-events Единственная проблема в том, что он был создан для Rails 3. Я пытаюсь реализовать это приложение в моем собственном приложении практики, но с использованием рельсов 4.2.4 до сих пор у меня возникают проблемы с функциональностью событий посещений.Rails 4 Разрешить пользователям создавать и участвовать в событиях
У меня есть три модели, которые связаны с использованием богатого соединения, используя множество функций: пользователя, события и event_registration.
user.rb
class User < ActiveRecord::Base
has_many :event_registrations
has_many :events, through: :event_registrations
.
event.rb
class Event < ActiveRecord::Base
has_many :event_registrations
has_many :users, through: :event_registrations
.
event_registration.rb
class EventRegistration < ActiveRecord::Base
belongs_to :event
belongs_to :user
Функциональность, которая создает новое событие находится в пределах event_registrations_controller.rb
class EventRegistrationsController < ApplicationController
def new
EventRegistration.new(event_id: params[:event_id].to_i, user_id:
current_user.id)
redirect_to event_path(params[:event_id])
flash[:notice] = "Thanks for attending this event!"
end
def destroy
EventRegistration.where(event_id: params[:event_id].to_i, user_id:
current_user.id).first.destroy
redirect_to event_path(params[:event_id])
end
private
# Use callbacks to share common setup or constraints between actions.
def set_event_registration
@event_registration = EventRegistration.find(params[:id])
end
def event_registration_params
params.require(:event_registration).permit(:user_id, :event_id)
end
end
Это фрагмент из моих событий \ show.html.erb, что создает событие.
<% if session[:user_id] %>
<% if @event.attended_by(User.find(session[:user_id])) %>
<%= link_to "Cancel attendance", event_registration_path(event_id:
@event.id), method: :delete, class: "btn
btn-primary" %>
<% else %>
<%= link_to "Attend", new_event_registration_path(event_id: @event.id),
class: "btn btn-success" %>
<% end %>
<% end %>
Проблема в том, что я получаю «Спасибо за участие в этом мероприятии!». но никакой новой записи в таблице event_registrations не будет.
Заранее благодарю вас за помощь.
Вы должны иметь создать действие и удалить flash_notice под новое действие. Вот почему вы получаете сообщение о успехе, но не сохраняете. – nil
Оригинальный автор сказал об этом: «Приложение Rails для обучения ассоциациям». Так что это, вероятно, более экспериментально. Я советую не использовать его в качестве базы для вашей собственной системы. – Meier
Спасибо @Meier, но я сам просто занимаюсь рельсами, чтобы это вообще не входило в производство. – Zero