Ruby on rails RubyonRails:未定义的方法“[]';零:零级?

Ruby on rails RubyonRails:未定义的方法“[]';零:零级?,ruby-on-rails,nomethoderror,actioncontroller,Ruby On Rails,Nomethoderror,Actioncontroller,当我尝试创建它时,会显示undefined方法 def create @stock = Stock.find(params[:stock_availabilities][:stock_id]) @stock_availability = StockAvailability.new(stock_availabilities_params) respond_to do |format| if @stock_availability.save

当我尝试创建它时,会显示undefined方法

def create
    @stock = Stock.find(params[:stock_availabilities][:stock_id])
    @stock_availability = StockAvailability.new(stock_availabilities_params)
    respond_to do |format|
        if @stock_availability.save 
            format.html { redirect_to stock_path(v_id: @volunteer.id), notice: "stock saved successfully" }  
        else
            @stock_availabilities = StockAvailability.where(stock_id: @stock.id).all
            format.html { render 'index' }
        end
    end
end
其中
stock\u可用性
属于
stock
表<代码>外键是
股票id

日志中生成的参数为

Parameters: {
    "utf8"=>"✓", 
    "authenticity_token"=>"ZWxRnGJqwLmhfosIhQ+xdLrG3HJXy1m/dHcizT+Y5+E=", 
    "stockavailability"=>{
        "qty"=>"20",
        "price"=>"2000",
        "captured_at"=>"26/8/2015"
        }, 
    "commit"=>"Save Stockavailability"
}
    Completed 404 Not Found in 1ms
尝试更改:

@stock = Stock.find(params[:stock_availabilities][:stock_id])

你的这个问题会得到解决,但你也会得到其他错误。因为您没有在参数中正确传递
库存id
。所以试着在表单隐藏字段中设置它


运行代码而不出错。您应该在您的this param部分中有
库存id
“库存可用性”=>{“数量”=>“20”,“价格”=>“2000”,“捕获时间”=>“26/8/2015”},

我可以重新生成您的问题

2.1.1 :003 > a=nil
 => nil 
2.1.1 :004 > a['asd']
NoMethodError: undefined method `[]' for nil:NilClass
    from (irb):4
    from /home/illu/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'
2.1.1 :005 > 

更新有问题的表单。请发布错误日志。您在该操作中传递了哪些参数?你的表格和路线是什么?从2015-08-26 15:42:39+0530发布127.0.0.1的“/stockavailabilities”开始由stockavailabilities控制器处理#创建为HTML参数:{“utf8”=>“✓", "真实性令牌“=>”ZWxRnGJqwLmhfosIhQ+xdLrG3HJXy1m/dHcizT+Y5+E=”,“库存可用性”=>{“数量”=>“20”,“价格”=>“2000”,“捕获时间”=>“26/8/2015”},“提交”=>“保存库存可用性”}完成404在1ms ActiveRecord中找不到::RecordNotFound(找不到没有ID的库存):app/controllers/stockavailabilities\u controller.rb:9:“创建”
2.1.1 :003 > a=nil
 => nil 
2.1.1 :004 > a['asd']
NoMethodError: undefined method `[]' for nil:NilClass
    from (irb):4
    from /home/illu/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>'
2.1.1 :005 > 
# though no :stock_id key/value is found in your server log
@stock = Stock.find(params[:stockavailability][:stock_id])