Ruby on rails Rails显示模型中的行,这些行不是';t创造
我有这部分代码:Ruby on rails Rails显示模型中的行,这些行不是';t创造,ruby-on-rails,ruby-on-rails-3,postgresql,pg,Ruby On Rails,Ruby On Rails 3,Postgresql,Pg,我有这部分代码: <% current_user.meta_accounts.each do |meta_account| %> <%= content_tag(:li, link_to(meta_account.name, 'javascript:void(0)')) %> <% end %> 因此,它还显示了尚未创建的元帐户 在我的MetaAccounts表中,我有这个。我在用Postgres 因此,它还显示了最后一行,其中行号为*。我不知道为
<% current_user.meta_accounts.each do |meta_account| %>
<%= content_tag(:li, link_to(meta_account.name, 'javascript:void(0)')) %>
<% end %>
因此,它还显示了尚未创建的元帐户
在我的MetaAccounts表中,我有这个。我在用Postgres
因此,它还显示了最后一行,其中行号为*
。我不知道为什么,以及如何避免这种情况
谢谢你的帮助 您在PostgreSQL中看到的*行不是实际记录,它只是创建新记录的一种快速方法。如果要确定,请运行以下查询:
SELECT COUNT(*) FROM MetaAccounts WHERE user_id=1
它将返回4
我认为问题来自current\u user.meta\u accounts
中未保存的MetaAccount
对象。例如,在表单中,您可以构建绑定到表单的空对象。确保您没有调用当前用户.meta\u accounts.build(…)
如果是这样,您只需在中跳过每个循环所有元帐户对象(名称为空请尝试:
<% current_user.meta_accounts.select(&:persisted?).each do |meta_account| %>
<%= content_tag(:li, link_to(meta_account.name, 'javascript:void(0)')) %>
<% end %>
在我的meta\u帐户\u控制器中
我使用的是:def create@meta\u account=current\u user.meta\u accounts.build(params[:meta\u account])
在我的应用程序的其他部分中没有MetaAccountbuild
。但是current\u user.meta\u accounts.where('user\u id=?',current\u user.id.)。每个
都有帮助。谢谢我想我们大概是在同一时间回答的。将删除我的,因为OP接受了你的版本。
<% current_user.meta_accounts.select(&:persisted?).each do |meta_account| %>
<%= content_tag(:li, link_to(meta_account.name, 'javascript:void(0)')) %>
<% end %>