2017-06-27 5 views
0

Ich mag mein Handel Seite eine Liste aller Item zeigen, dass ein Benutzer auf ihren Warenkorb gelegt hat, und ich habe Schwierigkeiten zu verstehen, warum diese Implementierung mirWarum bekomme ich NoMethodError?

So in der #show Aktion meines TradesController eine NoMethodError schenkt Ich habe eine trade_ids Variable, die ein Array von hinzugefügten Elementen enthält, die von $redis.smembers current_user_trade zurückgegeben werden. Ich benutze das dann, um eine Suche nach der ID jedes Elements durchzuführen und die Instanzvariable in meiner Ansicht zu durchlaufen.

My Trades Controller:

class TradesController < ApplicationController 
def show 
    trade_ids = $redis.smembers current_user_trade 
    @trade_items = Item.find(trade_ids) 
end 

def add 
    $redis.sadd current_user_trade, params[:item_id] 
    render json: current_user.trade_count, status: 200 
end 

def remove 
    $redis.srem current_user_trade, params[:item_id] 
    render json: current_user.trade_count, status: 200 
end 


private 

def current_user_trade 
    "trade#{current_user.id}" 
end 
end 

Hier ist die Methode, die ich bin mit Artikel zu current_user_trade hinzuzufügen:

class Item < ActiveRecord::Base 

extend FriendlyId 
friendly_id :slug, use: [:slugged, :finders] 

def slug 
    [artist.parameterize, title.parameterize].join("-") 
end 

def trade_action(current_user_id) 
    if $redis.sismember "trade#{current_user_id}", id 
    "Remove from" 
    else 
    "Add to" 
    end 
end 
end 

Meine Routen:

resource :trade, only: [:show] do 
put 'add/:item_id', to: 'trades#add', as: :add_to 
put 'remove/:item_id', to: 'trades#remove', as: :remove_from 
end 

Und dann in meiner Trades Ich habe eine grundlegende:

Mein erster Gedanke ist, dass dies etwas mit der Tatsache zu tun hat, dass ich FriendlyId für die Slug-Generation verwende. Aber nach FriendlyId's doc, Hinzufügen von :finders zu der Slug-Deklaration in meinem Artikelmodell sollte Lookups nach ID wieder aktivieren. Aber es ist nicht.

Ich habe auch versucht, dies zu refactoring, so dass es meine Artikel verwendet: Schnecke, aber das war auch ohne Erfolg.

+1

Können Sie bitte '$ redis.smembers current_user_trade' Array posten. es hilft uns mehr –

+0

was meinst du post the array? Ich glaube, ich missverstehe. Rails weiß die 4 Artikel, die ich zu diesem Set hinzugefügt habe – sabaeus

+1

Ich meine zu sagen, dass drucken Sie Ihre $ redis.smembers current_user_trade_ Objekt –

Antwort

0

Fixed it. Stellt sich heraus, es wurde zwischengespeichert. Ich wechselte von der Speicherung item_id zu item_slug in der Mitte durch, und musste redis-cli flushall ausführen, um es zu erhalten, um die richtigen Daten zu speichern und darauf zuzugreifen.