2014-11-22 4 views
1

У меня есть форму на users/show.html.erb, чтобы создать новый car для этого пользователя.ActiveRecord: Как я могу получить все автомобили пользователя без включения тех, которые не были сохранены?

<%= 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 

так, что я могу перебрать это вместо этого, но я не могу понять синтаксис. Любая помощь будет очень признательна, спасибо!

ответ

3

Чтобы разъяснить ответ @ marflar, когда вы просматриваете автомобили пользователя, вы можете проверить, есть ли автомобиль new_record? и принять решение о его рендеринге.

= render @user.cars 

Тогда в парциальное:

<% unless car.new_record? %> 
    # render your html here; 
<% end %> 

В качестве альтернативы:

<% if car.persisted? %> 
    # render your html here; 
<% end %> 
Смежные вопросы