Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 添加到联接表_Ruby On Rails_Database_Join - Fatal编程技术网

Ruby on rails 添加到联接表

Ruby on rails 添加到联接表,ruby-on-rails,database,join,Ruby On Rails,Database,Join,我对Rails还很陌生,正在努力学习。我有一个用户表、一个事件表和一个UserEvent联接表。当用户创建事件时,会将其添加到联接表中。但是,我希望事件创建者以外的其他用户能够单击“加入事件”按钮,并将他或她自己添加到UserEvent加入表中,这样我就可以知道有多少人参加了一个事件。我该如何设置这个?我需要创建UserEvent控制器吗?除了知道在功能允许的情况下使用计数器缓存之外,我完全不知道如何实现这一点 资源如下: resources :users do resources

我对Rails还很陌生,正在努力学习。我有一个用户表、一个事件表和一个UserEvent联接表。当用户创建事件时,会将其添加到联接表中。但是,我希望事件创建者以外的其他用户能够单击“加入事件”按钮,并将他或她自己添加到UserEvent加入表中,这样我就可以知道有多少人参加了一个事件。我该如何设置这个?我需要创建UserEvent控制器吗?除了知道在功能允许的情况下使用计数器缓存之外,我完全不知道如何实现这一点

资源如下:

  resources :users do
    resources :activities
  end
  resources :activities, only: [:index, :show]

  resources :users do
    resources :events
  end

您可以使用
,只需在事件控制器中执行即可。当创建与用户关联的事件时,记录将自动添加到联接表中。只要确保模型中的关系定义正确就行了。有什么想法吗?“没有路由匹配[GET]”/users/1/events/26/join“更改
链接到
按钮到
。这将生成一个POST操作而不是GET.lol抱歉,我应该在链接中放置method::POST!安曼德回答:啊,这是有道理的!编程和rails对我来说还是那么新鲜,考虑到这些因素还不是很自然,但是现在我没有理由继续前进!感谢你,里奇,也感谢罗宾。没问题!!看到有人学习到伟大的东西总是好的!记住也要尽可能多地添加到Rails社区:)
#config/routes.rb
resources :events do 
    member do
       post :join
    end
end

#app/controllers/events_controller.rb
def show
    @event = Event.find(params[:event_id])
end

def join
   @event = Event.find(params[:event_id])
   @event.users << params[:user_id] #might need more than just params[:user_id]

   redirect_to root_path
end

#app/models/event.rb
Class Event < ActiveRecord::Base
    has_many :user_events
    has_many :users, through: :user_events
end

#app/views/events/show.html.erb
#will need to pass user_id somehow (use form)
<%= link_to "Join", event_join_path(@event), method: :post, data: {confirm: "Really Join?"} %>