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

时间:2015-06-08 23:17:23

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord strong-parameters

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

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

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

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

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

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

任何帮助都会受到重视!

1 个答案:

答案 0 :(得分: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

# 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 %>

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