如何从我的控制器

时间:2017-11-24 19:35:04

标签: ruby-on-rails ruby

#controller
class CalcController < ApplicationController
  def new
    @result = Calculator.calculate( params[:op],params[:a],params[:b])
    render "calc/index"
  end
end


#index.html.erb
<%= form_for :calc, url: { action: :new }, method: :post do |f|   %>
    <p>First num: <%= number_field_tag :a, params[:a] %></p>
    <p>Opration: <%= text_field_tag :op, params[:op]%></p>
    <p>Second num: <%= number_field_tag :b, params[:b] %></p>
    <%= f.submit 'Calculate!' %>
    <p>Result:<%= f.text_field :value => @result %></p>
<% end %>
  

UPDATE(添加我的项目的更多代码可能是我的麻烦有解决方案)

#model
class Calculator

  def self.calculate(op, a, b)
    case op.to_s
      when "+"
        a.to_i + b.to_i
      when "-"
        a.to_i - b.to_i
      when "*"
        a.to_i * b.to_i
      when "/"
        a.to_i / b.to_i
      else
        "Exception !!!"
    end
  end
end

如何在此字段中返回值

<p>Result:<%= f.text_field :value => @result %></p>

代码正常,因为我检查了这个

<p> = <%= @result %> </p>

@result返回true。 感谢您的帮助,提前:)

1 个答案:

答案 0 :(得分:1)

  

text_field(object_name,method,options = {})

使用text_field您需要将object_name作为参数传递,然后如果要添加自定义值,则添加value选项。在您的情况下,表单与将对象名称作为其属性之一的模型无关,因此您可以使用text_field_tag

尝试:

<%= text_field_tag :result, @result %>
<!-- <input type="text" name="result" id="result" value="value for @result"> --> 

查看更多herehere