Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 4中构建一个简单的计算器窗体_Ruby On Rails_Ruby_Ruby On Rails 4_Activerecord_Strong Parameters - Fatal编程技术网

Ruby on rails 在Rails 4中构建一个简单的计算器窗体

Ruby on rails 在Rails 4中构建一个简单的计算器窗体,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,strong-parameters,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,Strong Parameters,我希望在Rails 4应用程序中构建一套简单的计算器,但对于如何设置模型和控制器,我有点不知所措 在本例中,我有一系列计算器,它们的输入/变量非常相似,但在某些情况下略有不同,计算方法也略有不同 我的第一次尝试是简单地创建一个没有模型的计算器控制器,但很快就迷失了在哪里处理表单参数和计算逻辑之类的事情 创建一个模型对我来说也没有什么意义,因为计算器需要一些稍微不同的输入和计算方法 最后,在这个场景中,创建多个模型似乎也是一种非常混乱的方法 因此,考虑到所有这些,我想知道是否有人能告诉我如何处理这

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

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

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

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

最后,在这个场景中,创建多个模型似乎也是一种非常混乱的方法

因此,考虑到所有这些,我想知道是否有人能告诉我如何处理这个问题。如果有助于获得更多信息,我希望建立与以下电子表格相同的方法:


任何帮助都将不胜感激

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

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

# 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

#应用程序/控制器/计算器#控制器
类计算器控制器<应用程序控制器
def索引
结束
def新
@结果=计算器.send(参数[:操作],*[params[:a],params[:b]]
渲染:索引
结束
结束

#app/views/calculator/index.html.erb
=

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


)()

您是否需要将任何输入或结果保存到数据库以备将来检索,或者计算是在没有持久性的情况下进行的?不需要保存任何结果,因此我认为不需要模型。然而,如果这样做更容易,我也不一定会感到不安。根据我在这些计算器中看到的情况,我不认为有必要在rails中完成这项工作,相反,使用javascript更容易实现,假设您同意任何开发人员都可以访问计算,并且不需要保留任何有关正在执行的计算的统计信息。但是,我建议,如果您确实想承担Rails中的所有工作,那么由非模型类支持的一系列控制器操作可能是最简单的方法。超级愚蠢的问题,但是我如何将@result传递给索引操作呢。现在是零。嗯,我真的不确定你想做什么。。。在此上下文中,
索引
操作仅用于呈现
索引
视图,而
新建
操作用于执行计算并呈现注入
@结果
变量的
索引
视图。这就是为什么最初,@结果为零。
# 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 %>