在我的控制台里面,它显示了username@email.com.attacher_。我非常确定重文件不起作用,因为用户的图像不在那里。但是,当file为nil时,我该如何设置它来处理方法块呢?
module MessagesHelper
def recipients_options
s = ''
users = User.all + BizUser.all; users.each do |user|
s << "<option value='#{user.id}'
data-img-src='#{attachment_url(@user, user.email, :profile_avatar,
:fill, 50, 50)}'>#{user.username}</option>"
end
s.html_safe
end
end下面是我的日志文件中显示的错误
NoMethodError in Messages#new
ActionView::Template::Error (undefined method `profile_avatar_attacher' for nil:NilClass):
9: <div class="row">
10: <div class="large-5 medium-5 small-4 columns" style="padding-bottom: 10px;">
11: <%= label_tag 'recipients', 'Choose recipients' %>
12: <%= select_tag 'recipients', recipients_options, multiple: true, class: 'form-control chosen-it' %>
13: </div>
14: </div>
15: <div class="row">
app/helpers/messages_helper.rb:6:in `block in recipients_options'
module MessagesHelper
def recipients_options
s = ''
users = User.all + BizUser.all; users.each do |user|
s << "<option value='#{user.id}' data-img-src='#{attachment_url(@user, :profile_avatar, :fill, 30, 30)}'>#{user.username}</option>"
end
s.html_safe
end
end用于头像方法的ApplicationHelper
def avatar_for_user
image_tag attachment_url(@user, :profile_avatar, :fill, 30, 30)
end我在participants.html.erb部分中也收到了一个错误
<% conversation.participants.each do |participant| %>
<% unless participant == current_user %>
<%= avatar_for_user participant %>
<% end %>
<% end %>发布于 2015-01-26 20:45:39
您混淆了user局部变量和@user实例变量。
在recipients_options中,可以调用
attachment_url(@user :profile_avatar, :fill, 30, 30)您为每个选项呈现相同的附件(用于@user的附件)。
我怀疑你是想打电话给
attachment_url(user, :profile_avatar, :fill, 30, 30)从而呈现每个用户的附件。
出现NoMethod-error的原因似乎是@user变量为空。
而且,avatar_for_user看起来很奇怪。您可以不带参数地定义它,但在部分中将它传递给用户。
https://stackoverflow.com/questions/28080057
复制相似问题