Как мне обновить и отобразить теги текущего пользователя, помеченные с помощью activ_as_taggable_on? - PullRequest
0 голосов
/ 04 августа 2011

Я не уверен, как отобразить в моем представлении теги, принадлежащие пользователю, вошедшему в систему с помощью Omniauth.

Страница в представлении загружает случайные фотографии и связанные с ними теги (через форму, которую можно обновить с этой страницы). Это работает, но когда я вхожу с учетной записью Facebook A, на нем отображаются те же теги, что и при входе с учетной записью Facebook B.

Получение ошибки whiny nil с этим ниже Вызывается id для nil, который по ошибке будет равен 4 - если вы действительно хотите id nil, используйте object_id

Вид:

<%= render 'tag_form' %>

Обновлено: Форма:

<%= form_for @brand, :html => {:multipart => true} do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :tag_list, "Your tags" %> <%= f.text_field :tag_list, :value => @brand.all_tags_list %>
</p>
<p><%= f.submit "Tag" %></p>
<% end %>

# <%= f.text_field :tag_list %> was changed to the one above.

Теги также вызываются на приборной панели пользователя, как показано ниже (в настоящее время пусто, потому что сейчас я не могу обновить теги):

<%= 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

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Я удалил это из своей модели:

before_save :set_tag_owner

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

Я добавил это к контроллеру в действии, которое обрабатывает запросы PUT вместо GET-запросов (метод обновления)

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

Этоработает сейчас.

0 голосов
/ 09 августа 2011

Я только что говорил с вами по IRC, но вы можете попробовать:

<% = debug @ brand.tag_list%>

по вашему мнению.У вашего пользователя нет тегов.Если вы хотите, чтобы теги для вашего пользователя добавлялись act_as_taggable в вашей модели User


Кажется, вы хотите найти теги @brand, помеченные current_user.В этом случае:

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