2015-08-26 5 views
-2

Когда я пытаюсь создать его, это говорит о неопределенном методе.Ruby on rails: undefined method `[] 'для nil: NilClass?

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_availabilities принадлежит Stock таблице. foreign key есть stock_id.

В PARAMS Произведенный в журнале является

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 
+2

Обновление вашего вид в вопросе. –

+1

Пожалуйста, разместите журнал ошибок. – Surya

+0

Какие параметры вы проходите в этом действии? Какая у вас форма и маршруты? –

ответ

1

I рода регенерировать проблему

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 > 

В вашем случае это, вероятно, params[:stock_availabilities] дает nil и вы пытаетесь получить доступ к ключевым :stock_id в nil классе , Предлагаю вам указать значения в точке.

EDIT1:

После того, как посмотреть на ваш сервер войти ясно, что ключ stock_availabilities вы пытаетесь получить доступ фактически stockavailability

ваш код должен быть как

# though no :stock_id key/value is found in your server log 
@stock = Stock.find(params[:stockavailability][:stock_id]) 
0

изменения попробовать:

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

в

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

Ваша эта проблема будет решена, но получит вы получите другую ошибку тоже. Потому что вы не пропустите stock_id правильно в параметрах. Поэтому попробуйте установить это также в форме скрытого поля.

Чтобы запустить код без ошибок. Вы должны иметь stock_id в вашем этих парах разделе "stockavailability"=>{"qty"=>"20", "price"=>"2000", "captured_at"=>"26/8/2015"},

 Смежные вопросы

  • Нет связанных вопросов^_^