Ruby on rails erb中的Rails局部变量顺序导致错误

Ruby on rails erb中的Rails局部变量顺序导致错误,ruby-on-rails,ruby-on-rails-4,erb,formbuilder,Ruby On Rails,Ruby On Rails 4,Erb,Formbuilder,因此,我有以下有效的雇员再培训局: <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.

因此,我有以下有效的雇员再培训局:

<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 %>
它会引发如下错误:
undefined method
name'表示nil:NilClass`。所以我猜表单生成器在某种程度上覆盖了ul块中的用户技能。但我为什么以及如何解决这个问题?这似乎不是一个formtastic问题,因为我还使用了原生表单生成器

更新:
所以我发现@user\u skills数组实际上包含刚刚创建的user\u skill,它没有被持久化,也没有
\skill\u id
\skill.name
!如果我在表单的开头添加了
UserSkill.new
,那么@user\u skills数组就可以了。activerecord中可能有一个缓存层,它会自动将刚刚创建的对象包含到查询中。或者这是一个bug?

调用
当前用户。用户技能。新的
将一个空白的
用户技能添加到
当前用户的关联中。由于<代码> @ UsSeriTeals>/Cube >只是引用了 CurrutsUpult.UsSeriTeals>/Cult>,在初始化新的UsSeriLead记录后,在无序列表中包含空白实例。

您最好简单地初始化一个新的
用户技能
,格式如下:

<%= semantic_form_for UserSkill.new do |f| %>
  <%= f.inputs %>
  <%= f.actions  %>
<% end %> 

谢谢这也是我发现的。我假设当前的用户技能将只包括持久化对象,这显然不是真的。
<%= semantic_form_for UserSkill.new do |f| %>
  <%= f.inputs %>
  <%= f.actions  %>
<% end %> 
def create
  @user_skill = current_user.user_skills.create(params[:user_skill])
  respond_with @user_skill
end