То, что я пытаюсь сделать, это кнопка_, которая указывает на патч (обновление?) Внутри моего контроллера, но он не работает.Это мой код.
<div>
<%= product.picture? ? image_tag(product.picture_url, :alt => product.name) : image_tag("https://via.placeholder.com/250x250") %>
Product: <%= product.name %><br />
Description: <%= product.description %><br />
Price: <%= humanized_money_with_symbol(product.price) %><br />
Venduto da: <%= product.user.email %><br />
<%= button_to "Remove", {controller: "orders", action: 'remove', :id => product.id}, :method=>:patch %>
</div>
в методе обновления, предполагая, что я заставлю его работать рано или поздно, я должен вставить логику для удаления товара из самого заказа.На данный момент, если я перехожу на страницу просмотра внутри index.html.erb, которая содержит список заказа для оплаты внутри соответствующих продуктов.Заказ в моем случае - это своего рода корзина.Я получаю эту ошибку:
Не найдено ни одного маршрута {: action => "remove",: controller => "orders",: id => 456}
это мои маршруты:
Rails.application.routes.draw do
root to: 'pages#home'
devise_for :users
resources :products
resources :orders, only: [:show, :create, :index, :destroy, :patch]
require "sidekiq/web"
authenticate :user, lambda { |u| u.admin } do
mount Sidekiq::Web => '/sidekiq'
end
end
Как вы можете видеть, я добавил: patch patch, но он все равно не работает.Я думаю, что проблема в первую очередь в моих маршрутах ... У меня есть несколько вопросов сейчас.1: Если я хочу создать помощника link_to или button_to для выполнения метода, отличного от обычной операции crud, нужно ли мне создавать маршрут к этому пользовательскому методу?Можете ли вы сделать пример в случае?2: в моем случае я делаю пост, запрос на получение или патч?(я пытаюсь с патчем, потому что я обновляю свой заказ, так что я думаю, что я должен вставить логику, чтобы удалить продукт внутри заказа) документация по rails отличная, но насчет маршрутизации, я очень запуталсяв настоящий момент, как только я хочу сделать что-то из схем, я застреваю дни, пытаясь заставить это работать.3: может кто-то связать меня с хорошим руководством с примерами, чтобы понять маршрутизацию?Спасибо.
ОБНОВЛЕНИЕ Я нашел решение:
<%= button_to("Remove", {:controller => "orders", :action => "update", :id => product.id}, :method => :patch) %>
и добавил в маршрут следующее:
patch '/orders', action: :update, controller: 'orders'
сейчас это работает, но у меня все еще есть сомнения по поводупочему это работает: /