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 будет встроен рядом с кодом на ссылку. Смотрите в браузере себя.

Другие вопросы по тегам