我有一个用户和一个事件模型
当用户位于事件页面时,我希望他可以单击一个按钮来表示“算我一个”。然后我就可以获得该事件的所有参与者的名单。
我应该写什么样的表格?我需要在两者之间再换一张 table 吗?
<%= form_tag concert_path(@concert) do %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= submit_tag "count me in", class: "btn btn-primary
<% end %>
编辑
我添加了建议的代码,但我面临着没有路由匹配 POST 寄存器的情况
所以我添加了 method: :put
<%= form_tag register_concert_path(@concert), method: :put do %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= submit_tag "count me in", class: "btn btn-primary" %>
<% end %>
现在我可以将自己添加到音乐会中,但发生了一些奇怪的事情,它尝试下载文件注册
并显示失败 - 找不到文件
另外我应该如何从音乐会中删除用户? 我应该采用取消订阅的方法并将当前用户从列表中删除吗?
def unsubscribe
concert = Concert.find(params[:id])
user = User.find(params[:user_id])
concert.users.delete(user)
end
最佳答案
您正在寻找的是:has_and_belongs_to_many 您需要定义音乐会和用户之间的链接。
class Concert
has_and_belongs_to_many :users
end
class User
has_and_belongs_to_many :concerts
end
然后在 Controller 中,请使用其他操作(注册),您必须将用户添加到当前音乐会。
def register
concert = Concert.find(params[id])
user = User.find(params[user_id])
concert.users << user # adding the user
concert.save
end
routes.rb
resources :concerts do
member do
put 'register'
end
end
和 View
<%= form_tag register_concert_path(@concert) do %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= submit_tag "count me in", class: "btn btn-primary
<% end %>
关于ruby-on-rails - 如何让用户订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046282/