我是ruby on rails的新手..所以请帮我搞清楚..谢谢你.. :)
我正在尝试创建一个简单的计算器
我正在wrong number of arguments (1 for 0)
calculator_controller.rb
class CalculatorController < ApplicationController
def calculate
pasta = params [:pasta]
noodles = params [:noodles]
@result = pasta.to_i + noodles.to_i
redirect_to result_path
end
end
/views/page/calculator.html.erb
<%= form_tag({:controller => "calculator", :action => "calculate"}, :method => "post") do %>
<div>
<%= check_box_tag 'pasta', '100' %>MENU ITEM 1
</div>
<div>
<%= check_box_tag 'noodles', '200' %>MENU ITEM 2
</div>
<div>
<%= submit_tag('Submit', :disable_with => 'Submitting...')%>
</div>
<% end %>
/views/calculator/result.html.erb
<div>
<%= @result %>
</div>
答案 0 :(得分:0)
class CalculatorController < ApplicationController
def calculate
pasta = params [:pasta]
noodles = params [:noodles]
@result = pasta.to_i + noodles.to_i
redirect_to result_path
end
end
在这里,您将重定向到result_path。所以@result中的值丢失了。因此,如果你想保留@result的值,你可以将它保持在会话中或通过使用参数传递它或使用flash或渲染视图 我将在这里使用渲染视图。
params
和[:pasta]
之间有一个空格。这就是为什么你得到这个错误。删除空间,它将为你工作。
class CalculatorController < ApplicationController
def calculate
pasta = params[:pasta]
noodles = params[:noodles]
@result = pasta.to_i + noodles.to_i
render 'result'
end
end
在视图中
<div>
<%= @result %>
</div>