Rails, обновление записей для системы приглашений
Я хочу разрешить пользователям принимать приглашения, тег принятия находится в самой модели приглашений (поэтому мне нужно обновить таблицу). Пока ничего не происходит, когда пользователь нажимает кнопку подтверждения
Посмотреть
<% @invites.where(user_id: current_user.id).find_each do |invite| %>
...
<%= button_to "Accept", accept_invite_invites_path(invite), method: :put %>
end
Маршруты
resources :invites do
collection do
get 'accept_invite'
end
end
контроллер
def accept_invite
@invite = Invite.find(params[:id])
@invite.accept
end
def decline_invite
@invite = Invite.find(params[:id])
@invite.decline
end
def set_invites
@invite = @story.invites.find(params[:id])
end
def new
@invite = @story.invites.new
end
Я получаю "неопределенный метод" invites "для nil:NilClass", если я сохраняю: update как часть set_invites, удаление update позволяет моему коду работать, но в базу данных не вносятся никакие изменения.
модель
def accept
accept = true
save
end
def decline
accept = false
save
end
Приставка
Processing by InvitesController#update as
Parameters: {"authenticity_token"=>"BDle9fqXHT9ZFctMbO4RvxfPuTQXe2Nq+b6/T29B3xjpYdtMozVUFLiRlaQFtuYzMrBceTQn8OtfGjJTe4wa/Q==", "id"=>"accept_invite"}
User Load (1.7ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
No template found for InvitesController#update, rendering head :no_content
Completed 204 No Content in 85ms (ActiveRecord: 1.7ms)
Это странно, потому что база данных выбирает из пользовательской таблицы, а не обновляет таблицу приглашений
Так в чем проблема? Маршрут неисправен? Мой метод set_invites?
1 ответ
Так в чем проблема? Маршрут неисправен? Мой метод set_invites?
Да, ваш маршрут неисправен. Как я вижу, вы объявили свой маршрут в коллекции, но вам нужен член. А также вы должны изменить его на put
,
resources :invites do
member do
put 'accept_invite'
end
end