Rails 5 通过链接提交数据

问题描述 投票:0回答:1

我想使用 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

rails控制台下单的方式是

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

我想要一个来自 应用程序/视图/股票/显示 提交订单

帮助链接和控制器操作将非常感激。 先谢谢你了

ruby-on-rails activerecord erb has-many-through link-to
1个回答
0
投票

因为您即将

create
一个新的
order
对象;因此使用
POST
作为 HTTP 方法听起来更合适。所以,

link_to "Order Now!", order_stock_path(params[:id]), method: :post

我想应该可以。

请参阅此了解更多信息

在stocks_controller中

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 代码将嵌入链接代码附近。在浏览器中查看您自己。

© www.soinside.com 2019 - 2024. All rights reserved.