我正在使用Paperclip + AWS S3 + Imagemagick作为图像。它在带有标签的www.example.com/users中完全正常工作(也许是因为我把Paperclip模型和控制器放在那里?)
<%= image_tag user.avatar.url(:small)%>
但是,相同的代码不会显示在其他页面中,例如www.example.com/conversations。
我收到一条错误说:
NameError in Conversations#show
undefined local variable or method `user' for #<#<Class:0x007f9c10d25010>:0x007f9c10c17ce0>
答案 0 :(得分:0)
如果你使用设计进行身份验证,那么你应该这样做:
<%= image_tag current_user.avatar.url(:small)%>
如果您使用自己的身份验证,那么您应该在控制器中执行以下操作:
before_action: set_user
def set_user
@user ||= User.find(session[:user_id]) # Or your criteria to set user
end
在html.erb文件中或可能在您的布局文件中
<%= image_tag @user.avatar.url(:small) %>
如果我这样做,那么我会这样做。
<%= image_tag user.avatar.url(:small) %>
像我说的那样在控制器方法中添加befor_action: set_user
和set_user
方法。
在布局中渲染部分(在步骤1中创建)或者当您需要通过将局部视图传递给部分来显示用户头像时。
<%= render "layouts/shared/avatar", user: @user %>
答案 1 :(得分:0)
问题是我在对话控制器中为用户设置了不同的名称。 我所要做的就是改变
<%= image_tag user.avatar.url(:small)%>
到
<%= image_tag participant.avatar.url(:small)%>