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

Mho*_*oad 3 ruby activerecord ruby-on-rails strong-parameters ruby-on-rails-4

我希望在Rails 4应用程序中构建一组简单的计算器,我对如何设置模型和控制器感到有点失落.

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

我的第一个尝试是简单地创建一个没有模型的计算器控制器,但很快就会丢失我将处理诸如形式参数和计算逻辑之类的东西.

鉴于计算器需要一些稍微不同的输入和计算方法,创建模型对我来说也没什么意义.

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

所以考虑到所有这些,我想知道是否有人能告诉我如何处理这个问题的Rails方式.如果有助于获得更多信息,我希望建立与以下电子表格相同的方法:http://www.widerfunnel.com/proof/roi-calculators

任何帮助将非常感谢!

Jul*_*tta 6

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

在这种情况下,您可以在app/lib中创建一个Calculator类,并在控制器中使用它.例如:

# 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
Run Code Online (Sandbox Code Playgroud)

.

# 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
Run Code Online (Sandbox Code Playgroud)

.

# 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 %>
Run Code Online (Sandbox Code Playgroud)

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

;)