Rails 5 отправляет данные по ссылке
Я хотел бы представить информацию из моих представлений, используя контроллер заказов link_to, который не уверен, как кодировать.
Мои модели
class User < ApplicationRecord
has_many :orders
has_many :stocks, through: :orders
end
class Order < ApplicationRecord
belongs_to :user
belongs_to :stock
end
class Stock < ApplicationRecord
has_many :orders
has_many :users, through: :orders
end
Способ делать заказы с консоли рельсов
order = Order.new
user = User.last
stock = Stock.last
final = user.orders.create(user_id: user.id, stock_id: stock.id)
Маршруты
Rails.application.routes.draw do
devise_for :users
devise_for :admins
get '/history', to: 'orders#history'
post '/stocks/:id/', to: 'stocks#order', as: 'order_stock'
resources :stocks
root 'stocks#index'
end
Я хотел бы иметь одну ссылку изприложения / просмотры / акции / шоу для отправки заказов
Помощь с ссылкой и действиями контроллера была бы очень признательна. Заранее спасибо,
1 ответ
Так как вы собираетесь create
новый order
объект; так используя POST
как метод HTTP звучит более уместно. Так,
link_to "Order Now!", order_stock_path(params[:id]), method: :post
должно работать, я думаю.
Смотрите это для получения дополнительной информации
В акции_контроллер
def order
stock = current_user.stocks.find(params[:id])
stock.order.create
redirect_to stock_path(params[:id]), notice: 'Order created'
end
Это должно выглядеть несколько так
Примечание: Rails отправит вызов AJAX POST в контроллер в этом случае; в случае успеха он будет перенаправлен соответственно. Код AJAX будет встроен рядом с кодом на ссылку. Смотрите в браузере себя.