Ruby 获取未定义的方法“[]';对于nil:Rails 3中的NilClass

Ruby 获取未定义的方法“[]';对于nil:Rails 3中的NilClass,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想获取文本字段值到我的控制器,并用数据库进行搜索,但我得到了以下错误 错误: NoMethodError in HomesController#scan_hcsy undefined method `[]' for nil:NilClass Rails.root: C:/Site/swargadwar Application Trace | Framework Trace | Full Trace app/controllers/homes_controller.rb:38:in `sca

我想获取文本字段值到我的控制器,并用数据库进行搜索,但我得到了以下错误

错误:

NoMethodError in HomesController#scan_hcsy

undefined method `[]' for nil:NilClass
Rails.root: C:/Site/swargadwar

Application Trace | Framework Trace | Full Trace
app/controllers/homes_controller.rb:38:in `scan_hcsy'
请检查我下面的代码并尝试解决此错误

homes/hcsy_html.erb

斯瓦加德瓦尔,普里市,奥迪沙政府
以以下身份登录: HARICHANDRA SAHAYATA YOJANA纸条 {:action=>'scan_hcsy'}do | f |%>
控制器/homes\u controller.rb
class HomesController“index”
其他的
flash[:alert]=“无法创建用户”
闪光[:颜色]=“无效”
呈现“注册”
终止
终止
def hcsy_注册
@hcsy=THcsy.new
终止
def创建_注册
@hcsy=THcsy.new(参数[:hcsy])
如果@hcsy.save
flash[:注意]=“数据已成功保存”
闪光[:颜色]=“有效”
重定向到:action=>“index”
其他的
闪存[:警报]=“无法成功保存数据”
闪光[:颜色]=“无效”
渲染“hcsy_reg”
终止
终止
def扫描系统
@hcsy=THcsy。通过收据号查找收据(参数[:hcsy][:收据])
如果@hcsy
flash[:notice]=“检查记录”
闪光[:颜色]=“有效”
将_重定向到:action=>“scanrecord”
其他的
闪存[:警报]=“找不到收据编号”
闪光[:颜色]=“无效”
渲染“hcsy”
终止
终止
def hcsy
@hcsy=THcsy.new
终止
def扫描记录
终止
终止
型号/t_hcsy.rb
class-THcsy

请帮帮我。

您的参数有问题

尝试添加一些调试代码,例如:

  def scan_hcsy
+   raise ArgumentError if params.nil? 
+   raise ArgumentError if params[:hcsy].nil?
+   raise ArgumentError if params[:hcsy][:receipt].nil?
请尝试修复此拼写:

- <%= f.text_field :reciept, ...
+ <%= f.text_field :receipt, ...

-我不太确定这是否相关,但在您的模板中有
-
:receipt
,但在控制器中,您试图访问
参数[:hcsy][:receipt]
-
:receipt
。它看起来像模板中的一个输入错误-你能纠正它并测试它是否有效吗?你能发布请求中的
params
吗?现在它开始工作了。感谢joelparkerhenderson的帮助,我做到了。你能告诉我,我是否会删除搜索按钮,以及何时文本字段将具有所需的值吗?我如何执行该操作(e-scan_hcsy)在控制器内部。你能写更多关于你到底想要什么吗?(我不理解你的评论问题;例如,你是在问AJAX自动提交之类的问题吗?)大家好,joelparkerhenderson,让我们举个例子,假设我扫描了一个条形码,它的值会突然显示在文本字段中,一旦文本字段得到操作应该在控制器内执行的值,这就是我需要的。解决您需要的一个方法是使用JavaScript和“onChange”当字段中的值更改时,浏览器将运行JavaScript,并将字段的值发送到Rails应用程序。阅读Rails和AJAX、表单帮助程序以及可选的jQuery。
class THcsy < ActiveRecord::Base
  attr_accessible :Address, :Amount_Required, :B_Audio, :B_Thumb, :B_photo, :Beneficiary_Name, :Beneficiary_Rel_With_Decease, :Brahmin, :Business, :Created_by, :D_photo, :Date_Of_Required, :Deceased_Name, :Govt_Service, :HCSY_ID, :Land_Property, :Mobile_No, :Occupation, :Others, :PoliceStation, :Prev_Amount_Received, :Prev_Date_Recieved, :Prev_Receipt_No, :Receipt_No, :Recieved_Fund_Earlier, :Sdp_Id, :Updated_By,:BPL
  attr_accessor :receipt
end
  def scan_hcsy
+   raise ArgumentError if params.nil? 
+   raise ArgumentError if params[:hcsy].nil?
+   raise ArgumentError if params[:hcsy][:receipt].nil?
- <%= f.text_field :reciept, ...
+ <%= f.text_field :receipt, ...