所以我有以下的雇员再培训局的作品:在ERB导致错误
<ul class="list-group">
<%- @user_skills.each do |user_skill| %>
<li class="list-group-item"><%= user_skill.skill.name %></li>
<% end %>
</ul>
<%= semantic_form_for current_user.user_skills.new do |f| %>
<%= f.inputs %>
<%= f.actions %>
<% end %>
在我的控制,我有一个@user_skills = current_user.user_skills
。 一旦我交换两大块:
<%= semantic_form_for current_user.user_skills.new do |f| %>
<%= f.inputs %>
<%= f.actions %>
<% end %>
<ul class="list-group">
<%- @user_skills.each do |user_skill| %>
<li class="list-group-item"><%= user_skill.skill.name %></li>
<% end %>
</ul>
它提出了这样的错误:undefined method
名”的零:NilClass`。所以我猜测表单构建器是以某种方式覆盖ul块内的user_skill。但为什么以及如何解决问题?它似乎不是一个formtastic问题,因为我也使用了本地表单构建器。
更新: 因此,我发现@user_skills数组实际上包含刚才创建的user_skill,它尚未被保留,并且没有#skill_id
或#skill.name
!如果我在表单的开头做UserSkill.new
,那么@user_skills数组就可以。也许在activerecord中有一个缓存层,它会自动将创建的对象包含到查询中。或者这是一个错误?
谢谢。这也是我发现的。我认为current_user.user_skills将只包含持久对象,这显然是不正确的。 – randomor