在我的控制台内部,显示了username@email.com.attacher_。我很确定refile不起作用,因为用户的图像不存在。但是,当文件为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
我在participant.html.erb部分中也收到错误
<% conversation.participants.each do |participant| %>
<% unless participant == current_user %>
<%= avatar_for_user participant %>
<% end %>
<% end %>
答案 0 :(得分:1)
您正在混合user
局部变量和@user
实例变量。
在recipients_options
拨打电话
attachment_url(@user :profile_avatar, :fill, 30, 30)
您为每个选项呈现相同的附件(@user
的附件)。
我怀疑你想打电话
attachment_url(user, :profile_avatar, :fill, 30, 30)
从而为每个用户呈现附件。
您收到NoMethod错误的原因似乎是@user
变量为零。
此外,avatar_for_user
似乎很奇怪。您可以在没有参数的情况下定义它,但在部分中将其传递给用户。