在我的商家索引页面上,我试图显示当前登录用户对每个特定商家的信用额度。请注意,在列表中可能存在用户没有信用的商家。
商家#index
中的RuntimeError显示...... / app / views / merchants / index.html.erb第9行:
调用id为nil,错误地为4 - 如果你真的想要id为nil,请使用object_id
<ul class="list-group">
<% @merchants.each do |merchant| %>
<a href="/merchants/<%= merchant.id %>" class="list-group-item "><%= merchant.name %>
<% if Credit.where(:user_id => @current_user.id, :merchant_id => merchant.id).count > 0 %>
line9-> <%= Credit.where(:user_id => @current_user.id, :merchant_id => merchant.id).sum(:amount) %>
<% end %>
</a>
<% end %>
</ul>
提前致谢。
答案 0 :(得分:0)
不要在视图中放置纯SQL - 这就是控制器的用途
你应该这样做:
#app/models/credit.rb
class Credit < ActiveRecord::Base
scope :active, -> { where("amount IS NOT NULL") }
end
#app/controllers/credits_controller.rb
def index
@credits = current_user.credits.active #-> only shows active credits
end
#app/views/credits/index.html.erb
<ul class="list-group">
<% @merchants.each do |merchant| %>
<a href="/merchants/<%= merchant.id %>" class="list-group-item "><%= merchant.name %>
<%= @credits.sum(:amount) if @credits.present? %>
</a>
<% end %>