我在users/show.html.erb
上有一个表单,可以为该用户创建新的car
。
<%= form_for(user.cars.build(user_id: @user.id, garage_id: @user.garage.id)) do |f| %>
<%= f.hidden_field :user_id, value: @user.id %>
<%= f.hidden_field :garage_id, value: @user.garage.id %>
<%= f.submit "Book It", class: "btn btn-default btn-xs appointment-submit-button" %>
<% end %>
在页面上显示此表单后,我列出了所有用户的汽车。然而,当我循环通过用户的汽车时,它正在拿起一辆新建的但未保存的汽车(大概是因为上面的形式)。有没有办法要么a)在提交表格之前阻止汽车的建造,或者b)让汽车列表只循环通过那些已经保存的用户汽车?
我尝试在user.rb
中添加一个函数:
def saved_cars
self.cars.where(!is_new?)
end
所以我可以循环使用它,但我无法弄清楚语法。任何帮助将不胜感激,谢谢!
答案 0 :(得分:3)
要了解@ marflar的答案,当您浏览用户的汽车时,您可以检查汽车是否为new_record?
并决定渲染它。
= render @user.cars
然后在部分:
<% unless car.new_record? %>
# render your html here;
<% end %>
可替换地:
<% if car.persisted? %>
# render your html here;
<% end %>
答案 1 :(得分:2)
您想要ActiveRecord的new_record?方法及其小朋友persisted?。