странного поведением:Включают модель отношение с визуализацией частичной
Это работает в представлениях (A):
<%= Contract.first.expenses.find_by(contract_id: 1).receipt.url %>
#=> Shows default image url
Это не в представлениях (B):
<%= contract.expenses.find_by(contract_id: 1).receipt.url %>
неопределенного метод «получение» для ноля: NilClass
B находится внутри частично, и это выглядит так:
<% @contract.each do |contract|
<%= render partial: 'expense_modal', locals: { contract: contract } %>
<% end %>
Guess мне не нужно, чтобы подтвердить какое-либо отношение, как А работает просто отлично. Есть ли проблема с B? Im с использованием Paperclip.
Doing Contract.first.expenses.find_by(contract_id: 1).inspect
я получить то, что ожидается, но не так с contract.expenses.find_by(contract_id: 1).receipt.inspect
Редактировать
Я перезапуске сервера много времени. Вот изображения:
просмотров/расходы/_expense_model.html.erb:
<%= contract.expenses.find_by(contract_id: 1).receipt.url %>
просмотров/расходы/show.html .erb:
<% @contract.each do |contract|
<%= render partial: 'expense_modal', locals: { contract: contract } %>
<% end %>
Решение:
основе Andrey Deineko's комментариев мне нужно добавить, если заявление в expense_modal
зрения:
<% expense_obj = contract.expenses.find_by(contract_id: contract.id) %>
<% if expense_obj %>
<% receipt_url = expense_obj.receipt.url %>
<% else %>
<% receipt_url = "/assets/receipt/missing-receipt.jpg" %>
<% end %>
Тогда:
<%= image_tag(receipt_url) %>
можете ли вы 100% гарантии, что 'контракт == Contract.first'? –
Да. 'contract.inspect' = true. 'contract.id.inspect = true' – Sylar
нет, пожалуйста, покажите мне, что' Contract.first.id == contract.id' => 'true' (который я ставлю' false' –