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