Как указать другое действие для помощника link_to?
Я создаю веб-сайт, где пользователи могут отмечать и снимать пометки с "избранных". Я реализовал это через Ajax, используя атрибут формы Rails remote: true
так что вся страница не перезагружается, просто меняется статус элемента.
У меня есть два метода в FavouritesController
def create
Favourite.create!(item_id: params[:favourite][:item_id])
respond_to { |format| format.js }
end
def destroy
Favourite.find(params[:id]).destroy!
respond_to { |format| format.js }
end
Проблема в:
Я хочу вызвать другое действие из того же контроллера, чтобы "снять отметку" с элемента в другом представлении. Я использую код ниже, но когда я нажимаю на ссылку - старый метод destroy
вызывается из контроллера вместо желаемого delete_from_index_list
метод. Мне нужны два отдельных метода, потому что они возвращают разные javascript (jquery).
<%= link_to "delete", @favourite, method: :delete, remote: true, action: 'delete_from_index_list' %>
1 ответ
Проверьте документацию link_to - я опишу, что вы хотите.
Я не проверял это, но я думаю, вы хотите:
<%= link_to "delete", controller: 'favourites', action: 'delete_from_index_list', id: @favourite, remote: true %>
Если бы это был мой код, я бы нашел маршрут для delete_from_index_list
метод, и назовите его так:
<%= link_to "delete", route_for_delete_from_index_list_path(@favourite), method: :delete %>
Таким образом, он более изобретателен, в то время как первый пример не изобретателен.