0

Omniauthでログインしたユーザーに属するタグを自分のビューに表示する方法がわかりません。acts_as_taggable_onでタグ付けされた現在のユーザーのタグを更新して表示するにはどうすればよいですか?

ビュー内のページには、(そのページから更新できるフォームを介して)ランダムな写真とタグが読み込まれます。それは動作しますが、FacebookアカウントAでログインすると、FacebookアカウントBでログインしたのとまったく同じタグが表示されます。

これでwhiny nilエラーが発生します誤って4になる - あなたは本当にゼロのIDを望んでいた場合、

をOBJECT_ID使用した図である:更新

<%= render 'tag_form' %> 

フォームがされています

(明らかに私は今のタグを更新することはできませんので、現在空)、以下のよう

タグはまた、ユーザーのダッシュボードに呼び出されます。

<%= brand.taggings(:tagger_id => current_user.id, :tagger_type => 'User').collect{|tagging| tagging.tag.to_s}.join(", ") %> 

アプリケーションコントローラは、現在のユーザを示す

def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
end 

ブランドコントローラ

helper_method :current_user 

def index 
    @brands = Brand.all 
    @brand = Brand.order("RANDOM()").first 
end 

を追加しました:ブランドモデル

attr_accessible :name, :tag_list, :current_user 
acts_as_taggable_on :tags 

belongs_to :user 

before_save :set_tag_owner 

def set_tag_owner 
    set_owner_tag_list_on(@brand, :tags, self.tag_list) 
    self.tag_list = nil 
end 

答えて

0

はちょうどIRC上であなたに話していたが、あなたは試すことができます:

<% =デバッグする@ brand.tag_list%>

あなたのビューで。あなたのユーザーはタグを持っていません。あなたは、ユーザーのタグがあなたのUserモデル


でacts_as_taggableを追加したい場合はあなたがCURRENT_USERによってタグ付け@brandのタグを検索したいようです。その場合:

<%= debug @brand.taggings(:tagger_id => current_user.id, :tagger_type => 'User').all %> 
+0

ルネ、あなたの助けは非常に貴重です。私の最後の問題は、条件tagger_id => current.user.idが機能しないことです。現在、保存されたタグはすべて表示されます。サーバーが((taggings.tagger_id IS NULLとtaggings.context = 'tags')))これはおそらく理由です。 – Simpleton

+0

あなたのコードはタギング後に.whereが必要です。私は、現在のユーザーのものではないタグを表示しないが、今は上記のコメントと同じ理由でタグがないので(tagger_idはNULL)、それにはタグがないショー。 – Simpleton

+0

ああ、私はそれが部分的なフォームと関係があると思う。フォームテキストフィールドは、以前に追加されたタグを読み込みますが、current_userだけでなくすべてのタグを読み込みます。したがって、保存すると、current_user.idではなくNULLに保存されます。これを修正するには? – Simpleton

0

私は私のモデルからこれを削除:

before_save :set_tag_owner 

def set_tag_owner 
    set_owner_tag_list_on(@clown, :tags, self.tag_list) 
    self.tag_list = nil 
end 

私が代わりにGETリクエスト(Updateメソッド)のPUT要求を処理し、アクションのコントローラにこれを追加

current_user.tag(@clown, :with => params[:brand][:tag_list], :on => :tags) 

これで動作します。

関連する問題