У меня есть две модели, пользователи и материалы. Пользователи могут использовать любимые материалы. Я установил отношения, и код для favouriting работает нормально, но я не могу получить код для неудобства. У меня есть следующий код для unfavouriting:Удаление записей с использованием форм в рельсах 3.2
Материалы Контроллер (в шоу-акции, где unfavourite форма есть)
@favourite = Favmat.where(:user_id => current_user.id, :material_id => @material.id)
Примечание: Я использую этот код, чтобы решить, какую кнопку, чтобы показать в представлении. Предполагая, что запись существует, мы получаем следующее:
Посмотреть
<%= form_for @favourite, :method => :delete do |f| %>
<%= f.submit "Unfavourite" %>
<% end %>
Проблема, кажется, здесь. Ничто из того, что я делаю, не дает мне рабочего пути к действию destroy в контроллере favmats. Я попытался использовать form_tag, но потом я получаю очень странные маршруты, которые не работают.
Favmats Контроллер
def destroy
Favmat.find(params[:id]).destroy
respond_to do |format|
format.html { redirect_to @material }
format.js
end
end
Update
Я также попытался с помощью link_to вместо формы. Код выглядит следующим образом:
<%= link_to "Unfavourite", favmat_path, method: "delete" %>
странные вещи, что HTML для этого принимает favmat идентификатор из материала, не является объектом favmat. Я не знаю, как получить идентификатор объекта favmat. Ничто не работает.
Вы получаете ошибку? Если бы я был на вашем месте, я бы справился с «неудобством» в 'material_controller', как действие участника. –
У меня есть ошибка, да. Я думал о том, чтобы иметь дело с неудобством в контроллере материалов, но он уже довольно толстый, и, похоже, имеет смысл иметь действия, связанные с моделью Favmats в контроллере Favmats. – Finnjon
Какая ошибка вы получаете? Не могли бы вы вставить все backtrace? Возможно ли это 'undefined method model_name ...'? –