我有一个使用avatar
attr和full_name
方法的个人资料模型,该方法使用first_name
和last_name
个attrs。所有这些都在用户模型中委派。我真的不明白我怎么能得到零级错误。如果我删除了测试通过的图像标记行,那么用户不能为零,因为我也会调用user.full_name
。我还有其他模型,我使用avatar
和full_name
,规格在那里工作正常。它也适用于开发环境。
我在这里想念的是什么?
所有3个块的错误:
Failure/Error: <%= image_tag user.avatar.url(:small_thumb), class: "profile-index-avatar" %>
ActionView::Template::Error:
undefined method `url' for nil:NilClass
Did you mean? URI
show.html.erb
<% @product.users.each_slice(2) do |user_row| %>
<div class="row" style="padding-top:20px;">
<% user_row.each do |user| %>
<%= link_to user_profile_path(user) do %>
<div class="col-md-6 product-user-column">
<%= image_tag user.avatar.url(:small_thumb), class: "profile-index-avatar" %>
<%= user.full_name %>
</div>
<% end %>
<% end %>
</div>
<% end %>
控制器规范
describe "GET show" do
let!(:profile) { create(:profile, user: @user) }
let!(:product) { create(:product, :product_with_nested_attrs) }
let!(:product_user) { create(:product_user, user: @user, product: product, role: "owner") }
before(:each) do
get :show, id: product
end
it "assigns products" do
expect(assigns(:product)).to eq(product)
expect(assigns(:product).industry_products.size).to eq(1)
end
it { is_expected.to respond_with 200 }
it { is_expected.to render_template :show }
end
更新
根据zetetic的建议,我检查了头像是否为零。对于索引操作,用户头像不是nil,也不是show action的头像。
如果将&#34;头像用于显示&#34;显示页面中的方法包含图像标记,然后它会像其他方式一样引发相同的错误。如果我删除图片标记行,则表示它不是零。
describe "GET index" do
let!(:profile) { create(:profile, user: @user) }
let!(:product) { create(:product, :product_with_nested_attrs) }
before(:each) do
get :index
end
it "avatar not nil for show" do
expect(@user.avatar).to_not be_nil
end
it "assigns products" do
expect(assigns(:products)).to eq([product])
end
it { is_expected.to respond_with 200 }
it { is_expected.to render_template :index }
end
describe "GET show" do
let!(:profile) { create(:profile, user: @user) }
let!(:product_user) { create(:product_user, user: @user, product: product, role: "owner") }
let!(:product) { create(:product, :product_with_nested_attrs) }
before(:each) do
get :show, id: product
end
it "avatar not nil for show" do
expect(@user.avatar).to_not be_nil
end
it "assigns products" do
expect(assigns(:product)).to eq(product)
expect(assigns(:product).industry_products.size).to eq(1)
end
it { is_expected.to respond_with 200 }
it { is_expected.to render_template :show }
end
答案 0 :(得分:1)
avatar为零