Как привязать пользователя к событию - PullRequest
2 голосов
/ 07 марта 2019

У меня есть пользователь и модель события

Когда пользователь находится на странице события, я бы хотел, чтобы он мог нажать кнопку, чтобы сказать «Подсчитать меня».Тогда у меня мог бы быть список всех участников в этом даже.

Какую форму я должен написать?Нужна ли мне еще одна таблица между?

<%= 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 %>

Теперь я могудобавляю себя на концерт, но что-то странное происходит, он пытается загрузить файл register и говорит Failed - can't find file

Также Как я должен удалить пользователя из концерта?Должен ли я пойти на метод отписаться и удалить текущего пользователя из списка?

def unsubscribe
  concert = Concert.find(params[:id])
  user = User.find(params[:user_id])
  concert.users.delete(user)
end

1 Ответ

2 голосов
/ 07 марта 2019

То, что вы ищете: has_and_belongs_to_many Вам необходимо определить связь между концертами и пользователями.

class Concert 
 has_and_belongs_to_many :users
end

class User
 has_and_belongs_to_many :concerts
end

Затем в контроллере, пожалуйста, используйте другое действие (зарегистрируйтесь), вам нужно добавить пользователя в текущий концерт.

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

и вид

<%= 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...