通过 has_many 在 Rails 中构建 RSVP 系统
Building an RSVP system in Rails with has_many, through
我在 Rails 5
中有一个活动应用程序,我正在尝试构建一个 RSVP 系统。
我要构建的功能是用户可以转到事件显示页面并单击 'rsvp' 按钮。然后,该用户将出现在 'users attending this event' 下的活动显示页面中。此外,该活动还将显示在用户的展示页面上 - 'this user is attending the following events'.
我是 Rails
的新手,我不太确定如何处理 rsvp 按钮功能。到目前为止,这是我的代码:
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
这是活动展示页面上的表单,我在其中尝试将用户添加到活动中
show.html.erb - 事件
<%= 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 %>
如果您需要任何额外的代码发布,请告诉我。
从控制器的操作中找到事件并将用户添加到出席中,就像
一样简单
event = Event.find_by_id(params[:event_id])
user = User.find_by_id(params[:user_id])
attendance= event.attendances.create(user_id=>user.id)
当您想了解参加活动的用户时,您可以找到:
users = event.users
我在 Rails 5
中有一个活动应用程序,我正在尝试构建一个 RSVP 系统。
我要构建的功能是用户可以转到事件显示页面并单击 'rsvp' 按钮。然后,该用户将出现在 'users attending this event' 下的活动显示页面中。此外,该活动还将显示在用户的展示页面上 - 'this user is attending the following events'.
我是 Rails
的新手,我不太确定如何处理 rsvp 按钮功能。到目前为止,这是我的代码:
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
这是活动展示页面上的表单,我在其中尝试将用户添加到活动中
show.html.erb - 事件
<%= 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 %>
如果您需要任何额外的代码发布,请告诉我。
从控制器的操作中找到事件并将用户添加到出席中,就像
一样简单event = Event.find_by_id(params[:event_id])
user = User.find_by_id(params[:user_id])
attendance= event.attendances.create(user_id=>user.id)
当您想了解参加活动的用户时,您可以找到:
users = event.users