Ruby on Rails:如何在代码中获取number_field的值

时间:2014-02-12 20:52:01

标签: ruby-on-rails ruby formbuilder formhelper

我是Ruby的新手,显然是RoR。我用脚手架来创建一个rails项目。对于模型,我需要两个字段,num1:integer和num2:integer。创建这两个字段的视图是

<%= form_for(@calculation) do |f| %>
    .
    .
    .
  <div class="field">
    <%= f.label :num1 %><br>
    <%= f.number_field :num1 %>
  </div>
  <div class="field">
    <%= f.label :num2 %><br>
    <%= f.number_field :num2 %>
  </div>

我一直在互联网上,无法找到如何获取输入这些字段的值以便操纵它们。这就是我所拥有的

<div class="actions">
    <%= f.button('Add', &Calculation.add(:num1,:num2)) %>
  </div>

在上面的代码中,我尝试创建一个按钮,该按钮将运行Calculation.add方法,并将number_fields中的值作为要添加的数字。凭借我拥有的东西,我不断收到错误:“undefined method` +'for:num1:Symbol”。我认为num1和num2只是number_fields的名称,所以我需要知道如何获得输入到这些字段的整数。谢谢你的帮助。哦,我正在使用Ruby 193和Rails 4.0和RubyMine IDE。

修改

这是型号代码。对于一个真正的红宝石主义者来说,我确信这很丑陋:

class Calculation < ActiveRecord::Base
  def self.add (x,y)
    x+y
  end

  def self.subtract(x,y)
    x-y
  end

  def self.multiply(x,y)
    x*y
  end
end

2 个答案:

答案 0 :(得分:0)

您必须将表单中的数据提交到控制器操作服务器端,以便在其上使用ruby Model代码。看起来你正在尝试做客户端行为(javascript)而不是服务器端(Ruby on Rails)

答案 1 :(得分:0)

服务器端您无法知道用户在用户提交表单之前插入了哪个值

因此,如果您想在表单提交之前操作数据,则应该实现Calculation客户端(阅读:使用javascript),否则您必须在控制器操作中捕获表单响应并操纵用户数据,它将出现在params控制器变量中。