与参展商和参与者建立会议轨道

时间:2018-01-15 14:40:54

标签: ruby-on-rails view devise model controller

我是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'

1 个答案:

答案 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

你可以看到你不需要实例变量,或者至少我需要的东西,但是如果你需要它,只需把它带回来。