在 Rails 4 中构建一个简单的计算器表格

Building a simple calculator form in Rails 4

我希望在 Rails 4 应用程序中构建一组简单的计算器,但对于应该如何设置模型和控制器我有点不知所措。

在这个例子中,我有一系列计算器,它们非常相似,但在某些情况下输入/变量略有不同,计算方法也略有不同。

我的第一次尝试是简单地创建一个没有模型的计算器控制器,但很快就迷失了我将在哪里处理表单参数和计算逻辑等事情。

创建模型对我来说也没什么意义,因为计算器需要一些略有不同的输入和计算方法。

最后,在这种情况下,创建多个模型似乎也是一种极其混乱的方法。

考虑到所有这些,我想知道是否有人可以向我展示 Rails 方法来解决这个问题。如果获得更多信息有帮助,我希望构建与以下电子表格集相同的方法:http://www.widerfunnel.com/proof/roi-calculators

如有任何帮助,我们将不胜感激!

您应该记住 Rails 不仅仅是关于 MVC。您可以创建自定义 classes,并在模型或控制器中使用它们。

在这种情况下,您可以在 app/lib 中创建一个计算器 class 并在您的控制器中使用它。例如:

# app/lib/calculator.rb
class Calculator
  def self.sum(a, b)
    a.to_i + b.to_i
  end

  def self.subtr(a, b)
    a.to_i - b.to_i
  end
end

.

# app/controllers/calculator_controller
class CalculatorController < ApplicationController
  def index
  end

  def new
    @result = Calculator.send(params[:operation], *[params[:a], params[:b]])
    render :index
  end

end

.

# app/views/calculator/index.html.erb
<%= form_for :calculator, url: { action: :new }, method: :get do |f|   %>
  <%= number_field_tag :a, params[:a] %>
  <%= select_tag :operation, options_for_select([['+', :sum], ['-',    :subtr]], params[:operation]) %>
  <%= number_field_tag :b, params[:b] %>
  <%= f.submit 'Calculate!' %>
<% end %>

<% unless @result.nil? %>
  <p> = <%= @result %> </p>
<% end %>

这只是一个非常简单的示例,说明通过创建您自己的 classes 并在 Rails 上使用它们可以做什么。

;)