Ruby on rails RubyonRails表单计算器

Ruby on rails RubyonRails表单计算器,ruby-on-rails,ruby,simple-form,Ruby On Rails,Ruby,Simple Form,我想为我的应用程序构建一个计算器。在用户保存记录之前,它应该能够在表单上输入一些变量,并点击“计算”按钮查看“他需要多少个单元来构建一些东西” 我创建了一条自定义路线: get 'product_stock_calculator/:product_id', to: 'product_stocks#calculator' class ProductStock < ActiveRecord::Base ... end class ProductStocksControlle

我想为我的应用程序构建一个计算器。在用户保存记录之前,它应该能够在表单上输入一些变量,并点击“计算”按钮查看“他需要多少个单元来构建一些东西”

我创建了一条自定义路线:

get 'product_stock_calculator/:product_id',       to: 'product_stocks#calculator'
class ProductStock < ActiveRecord::Base
  ...
end
class ProductStocksController < ApplicationController
...
   def calculator
     @product_stock = ProductStock.new
     @product_stock.product_id = params[:product_id]
   end
...
end
型号:

get 'product_stock_calculator/:product_id',       to: 'product_stocks#calculator'
class ProductStock < ActiveRecord::Base
  ...
end
class ProductStocksController < ApplicationController
...
   def calculator
     @product_stock = ProductStock.new
     @product_stock.product_id = params[:product_id]
   end
...
end
class-ProductStock
控制器:

get 'product_stock_calculator/:product_id',       to: 'product_stocks#calculator'
class ProductStock < ActiveRecord::Base
  ...
end
class ProductStocksController < ApplicationController
...
   def calculator
     @product_stock = ProductStock.new
     @product_stock.product_id = params[:product_id]
   end
...
end
class ProductStocksController
查看:

product_stocks/calculator.html.erb


<%= simple_form_for(@product_stock) do |f| %>

  <div class="form-inputs">
    <%= f.input :product_id, label: 'Producto', collection: Product.all, required: true %>
    <%= f.input :number_of_boxes, label: 'Units to build', required: true %>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>
product\u stocks/calculator.html.erb

如何在不保存记录的情况下提交表单、进行一些计算并呈现视图以显示计算结果?

与您所做的任何事情的方式相同

将表单提交到指向控制器操作的路由,在该路由中,您将根据参数执行计算

例如:

routes.rb:

match '/calculate', to "productstocks#calculate", via: 'post', as: :calculate
在控制器中:

def calculate
    @productstock = Productstock.new(productstock_params) # strong parameters here
    @result = params[:productstock][:param1] * params[:productstock][:param2] # for example
    render 'calculator' # this will render with the unsaved 
                        # new @producstock and you can use @result too in your view
end

您将表单的操作设置为
计算路径

,看起来您真的想在自定义操作中使用“表单标签”,而不是尝试基于资源的路由。可能需要更多信息才能正确回答。