创建与参展商和参与者的会议 rails

Create meeting with exhibitors and participants rails

我是 Ror 的新手, 我想在我的应用程序中添加一项功能,我的用户可以作为参展商(如果是卖家)或参与者(如果是客户)加入管理员创建的不同会议。 我正在使用设备,我用一个枚举来区分我的客户(未来的参与者)和我的卖家(未来的参展商)。 我花时间在这上面..不幸的是无法成功完成此功能。谢谢你的帮助。 这是我的代码:

Meeting.rb

class Meeting < ApplicationRecord
  has_many :users

  validates :name, presence: true
  validates :start_time, presence: true

end

User.rb

  has_many :meetings

会议负责人:

def participate
    @meeting = Meeting.find(params[:id])
    if user.client?
      @participant = @meeting << current_user
      @participant.save
    elsif user.seller?
      @exhibitor = @meeting << current_user
      @exhibitor.save
    end
  end

  def show
    @meeting = Meeting.find(params[:id])
    @exhibitors = User.all.participate
  end

meetings/show.html.erb:

<strong>Evenement:</strong><%= @meeting.name %><br>
détails<%= @meeting.details %><br>
le: <%= @meeting.start_time.strftime("%d/%m/%Y") %><br>
adresse:<%= @meeting.address %><br>
Nombre d'exposants: <%= @exhibitors.count %><br>
<% if user_signed_in? %>
<% if current_user.seller? %>
<%= link_to participate_path, class:"btn btn-info" do %>
Reserver un stand
<% end %>
<% end %>
<% end %>

routes.rb

resources :meetings
get 'participate' => 'meetings#participate'

首先,您可能希望将路线更改为:

  resources :meetings do
    post :participate
  end

这将生成如下 URI:

/meetings/:meeting_id/participate

然后对于您的方法,您可以不将用户推送到会议中,而是通过将会议推送到用户中来进行相反的操作,因此在您的 participate 方法中:

def participate
 meeting = Meeting.find(params[:meeting_id])
 current_user.meetings << meeting
end

如您所见,您不需要实例变量,或者至少对于我所看到的,但如果您需要它,只需将它带回来。