2014-02-28 59 views
0

我有一個工作表單,正確保存所有屬性,包括collection_select。然而,當我添加validates :title, presence: true並嘗試提交,我得到Rails奇怪的錯誤時提交collection_select w /無關驗證

undefined method 'map' for nil:NilClass

我的新動作:

class ItemsController < ApplicationController 
    def new 
    @item = Item.new 
    @categories = Question.editable_by(current_user) 
    respond_to do |format| 
     format.html { render :layout => true} 
     format.json { render :json => @item } 
     format.js 
    end 

    end 
end 

View是items\_form.html.haml

不工作

= f.collection_select :question_id, @categories, :_id, :iqs_item

作品

= f.collection_select :question_id, Question.editable_by(current_user), :_id, :iqs_item

這工作時我從控制器到視圖添加@categories對象。我猜在視圖中error函數沒有通過,或者當它試圖重繪錯誤頁面時它不能映射選擇項。

請協助。再次,我可以讓它工作,但我寧願不要在視圖中調用方法。當收集給它,即,@categories設置爲nil

+0

可以共享錯誤堆棧跟蹤 –

+0

我猜測'Question.editable_by(CURRENT_USER)'將返回零,即,爲CURRENT_USER沒有可編輯的問題。 –

+0

@KirtiThorat,最好的方法是從'development.log'?並且,不,「Question.editable_by(current_user)」被認爲是「Question.all」。該功能在控制器和視圖中都可以正常工作。只有在提交後纔會導致錯誤。 –

回答

1

= f.collection_select :question_id, @categories, :_id, :iqs_item

線會給undefined method 'map' for nil:NilClass錯誤。

在視圖中添加下面提到的代碼,如果您的頁面成功顯示(沒有錯誤信息)並且沒有select,那麼您知道@categories被設置爲nil。

- unless @categories.nil? 
    = f.collection_select :question_id, @categories, :_id, :iqs_item 

編輯

另外,在創建方法中設置@categories

+0

@KiriThroat,看我的編輯。我很快就會收到登錄信息。 –

+0

在哪個視圖中添加了選擇下拉菜單?請分享控制器名稱和視圖名稱。 –

+0

已更新。該視圖是具有表單的普通'new'方法。 –