我是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
会议/ 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'
答案 0 :(得分:0)
首先,您可能希望将路线更改为:
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
你可以看到你不需要实例变量,或者至少我需要的东西,但是如果你需要它,只需把它带回来。