0

我不确定如何在我的视图中显示属于使用 Omniauth 登录的用户的标签。

视图中的页面会加载与其关联的随机照片和标签(通过可以从该页面更新的表单)。它可以工作,但是当我使用 Facebook 帐户 A 登录时,它会显示与使用 Facebook 帐户 B 登录完全相同的标签。

使用下面的 Called id for nil 获取 whiny nil 错误,这会错误地为 4 - 如果您真的想要 nil 的 id,请使用 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
4

2 回答 2

0

刚刚在 IRC 上与您交谈,但您可以尝试:

<%= 调试@brand.tag_list %>

在你看来。您的用户没有标签。如果您想为您的用户添加标签,请在您的用户模型中添加acts_as_taggable


看来您想查找由 current_user 标记的 @brand 的标签。在这种情况下:

<%= debug @brand.taggings(:tagger_id => current_user.id, :tagger_type => 'User').all %> 
于 2011-08-09T07:09:17.887 回答
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

我在处理 PUT 请求而不是 GET 请求的操作中将此添加到控制器(更新方法)

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

现在可以了。

于 2011-08-10T13:47:09.960 回答