首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails : NoMethodError

Rails : NoMethodError
EN

Stack Overflow用户
提问于 2013-04-10 16:00:24
回答 3查看 126关注 0票数 0

我是ROR .I的初学者,当我在一本书上测试代码时,我遇到了一个问题。我一步一步地跟踪,但错误出现了.

NoMethodError in CaculatorController#calculate

代码语言:javascript
复制
undefined method `[]=' for nil:NilClass

Rails.root: /home/toth4321/计算器

代码语言:javascript
复制
app/controllers/caculator_controller.rb:4:in `set_charset'

控制器

代码语言:javascript
复制
class CaculatorController < ApplicationController
  before_filter:set_charset
  def set_charset
    @headers['Content-Type'] = 'text/html; charset=GB2312'
  end

  def calculate
    if request.post?
      arg1 = convert_float(:arg1)
      arg2 = convert_float(:arg2)
      op = convert_operator(:operator)
      @result = op.call(arg1, arg2)
    end
  end

  private
  def convert_float(name)
    Float (params[name])
  end

  def convert_operator(name)
    case params[name]
      when "+" then proc {|a,b| a+b}
      when "-" then proc {|a,b| a-b}
      when "*" then proc {|a,b| a*b}
      when "/" then proc {|a,b| a/b}
    end
  end
end

视图

代码语言:javascript
复制
<html>
  <head>
    <title>簡單的網頁計算器</title>
  </head>
  <body>
    <%= form_tag(:action => :calculate) %>
      <%= text_field_tag(:arg1, @params[:arg1], :size =>3) %>
      <%= select_tag(:operator, options_for_select(%w{+ - * /})), @params[:operator])) %>
      <%= text_field_tag(:arg2, @params[:arg2], :size =>3) %>
      <%= submit_tag("送出") %>
    <% end_form_tag %>
    <b><%= @result %></b>
  </body>
</html>

有人能帮我吗?非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2013-04-10 16:03:52

不知道@headers做什么,但据我所见,您还没有在任何地方定义它。尝试:

代码语言:javascript
复制
  def set_charset
    @headers = {'Content-Type' => 'text/html; charset=GB2312'}
  end
票数 0
EN

Stack Overflow用户

发布于 2013-04-10 21:37:05

@中删除@headers,因为它不是实例变量,而是response.headers哈希的委托方法:

代码语言:javascript
复制
headers['Content-Type'] = 'text/html; charset=GB2312'
票数 0
EN

Stack Overflow用户

发布于 2013-08-27 13:27:57

请尝试通过添加以下代码来运行。

代码语言:javascript
复制
before_filter :set_charset
def set_charset
    @headers["Content-Type"] = "text/html; charset=GB2312" 
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15930831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档