【发布时间】:2014-12-07 05:57:07
【问题描述】:
我正在尝试使用 Ruby on Rails 制作一个将华氏温度转换为摄氏度的简单计算器。输入一些输入值后,我不断收到错误“参数数量错误(1 对 2)”。这个应用程序比它应该的要困难得多。我一直在修复错误,但无法解决这个问题。我读过的其他帖子与我正在尝试制作的这个简单的应用程序大不相同,也更复杂。感谢您的帮助。
控制器 ...
class CalculatorController < ApplicationController
def calculate
@farenheit = params[:temperature]
unless @farenheit.blank?
@farenheit = Temperature.calculate({ :farenheit => @farenheit})
end
@celsius = (@farenheit - 32) * (5.0 / 9.0)
end
private
## Strong Parameters
def user_params
params.require(:farenheit)
end
end
模型...
class Temperature < ActiveRecord::Base
# attr_accessible :farenheit
validates_presence_of :farenheit
validates_numericality_of :farenheit
end
景色...
<h1>Temperature Calculator</h1>
<%= form_tag(calculator_calculate_path, method: "get", action: "calculate") do |form|%>
<p>Please enter a temperature in degrees Farenheit</p>
<%= text_field_tag 'temperature', @farenheit %></p>
<%= submit_tag 'Convert' %>
<h2>Result: </h2>
<h3> <% @celsius %> </h3>
<% end %>
堆栈跟踪(前 10 行)...
activerecord (4.1.6) lib/active_record/relation/calculations.rb:109:in `calculate'
C:in `calculate'
app/controllers/calculator_controller.rb:6:in `calculate'
actionpack (4.1.6) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.1.6) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.1.6) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.1.6) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.1.6) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.6) lib/active_support/callbacks.rb:113:in `call'
【问题讨论】:
-
应用程序跟踪是这样的:app/controllers/calculator_controller.rb:6:in `calculate'。完整的跟踪太长,无法发布。
-
发布完整的堆栈跟踪,否则一切都是猜测。至少发布前 5 行
-
@PNY 已编辑帖子以包含堆栈跟踪头
-
Temperature.calculate类方法calculate,是你定义的还是你使用Active Record的类方法?如果你已经定义了,也可以在这里发布。
标签: ruby-on-rails ruby model-view-controller