在 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 上使用它们可以做什么。
;)
我希望在 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 上使用它们可以做什么。
;)