我不确定如何在我的视图中显示属于使用Omniauth登录的用户的标记。
视图中的页面会加载与其关联的随机照片和标签(通过可从该页面更新的表单)。它有效,但是当我使用Facebook帐户A登录时,它将显示完全相同的标签,就像我使用Facebook帐户B登录一样。
通过以下方式获取whiny nil错误为nil调用id,这将错误地为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
答案 0 :(得分:0)
刚刚在IRC上与您交谈,但您可以尝试:
&lt;%= debug @ brand.tag_list%&gt;
在你看来。您的用户没有标签。如果您想为用户添加标签,请在用户模型中添加acts_as_taggable
您似乎想要查找由current_user标记的@brand标签。在那种情况下:
<%= debug @brand.taggings(:tagger_id => current_user.id, :tagger_type => 'User').all %>
答案 1 :(得分: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)
现在有效。