2016-06-07 52 views
0

我得到了下面的工作,並根據current_user.id(請參閱200 Ok響應)調用成員資料,這顯示在我的日誌中。從API獲取數據(ok 200響應未定義方法的ID)

GET https://api-e1.authrocket.com/v1/memberships?user_id=usr_0vKhXTr0K1bz6kUipKNnjD 
-> 200 (103.4 ms) 
NoMethodError (undefined method `id' for #<NCore::Collection:0x007f50c82a7e50>):app/controllers/directory/categories_controller.rb:13:in `index' 

我正在使用current_user.id工作。

@directory_category.user_id = current_user.id 

試圖所以它吸引用戶的membership.id

@directory_category.user_id = membership_info.id 

完整的創建語句我的工作去改變它。

# Create 
def create 
    @directory_category = Directory::Category.new(directory_category_params) 
    @directory_category.user_id = membership_info.id 
    if @directory_category.save 
     redirect_to directory_categories_path, notice: 'Category was successfully created.' 
     else 
      render :new 
    end 
end 

    # Directory Category Index 
    def index 
     @directory_categories = Directory::Category.where(user_id: membership_info.id) 
    end 

我的企圖,這不說200 OK越來越CURRENT_USER ID,並把它在結束AuthRocket :: Membership.all聲明如下圖所示:

def current_user 
    @_current_user ||= AuthRocket::Session.from_token(session[:ar_token]).try(:user) 
end 

def membership_info 
    AuthRocket::Membership.all user_id: current_user.id 
end 

https://authrocket.com/docs/api/memberships

+1

您修正了錯誤消息「NoMethodError(未定義的方法'id'爲'.......'後面會出現什麼內容?'我在其中用」關係「 。'all'方法(假設它是一個ActiveRecord模型)返回一個記錄列表,即使數據庫中只有一行匹配,你仍然需要從列表中選擇該項目 –

+0

我剛剛粘貼了其餘的錯誤。 – bradpotts

+1

我有正確的想法和錯誤的單詞'Collection'表示它基本上是一個數組,你的'membership_info'方法返回一個行列表,即使列表的大小是一行,你也需要選擇該項。將其更改爲'AuthRocket :: Membership.all(user_id:current_user.id).first'可能會修復它。 –

回答

1

它看起來像你的

def membership_info 
    AuthRocket::Membership.all user_id: current_user.id 
end 

方法實際上是返回一個集合而不是一個si項目。如果您將其更改爲

def membership_info 
    AuthRocket::Membership.all(user_id: current_user.id).first 
end 

或任何你真正想要的記錄,你應該提出停止這種錯誤。

+0

謝謝,我很遙遠地搞清楚它。 – bradpotts

相關問題