какой класс возвращается после действия удаления в рельсах - PullRequest
0 голосов
/ 28 мая 2019

Я использую rails-ujs для удаления объекта, моя цель - спрятать этот div с помощью obj после того, как я удалю его, я уже делал это раньше, но на этот раз я не могу получить его, думаю, мне нужно знать, что происходит. на виду:

<div class="employee_<%= employee.id %>" 
<%= link_to 'Destroy', employee, method: :delete, remote: true } %>
</div

на destroy.js.erb:

$('div.each-employee-data').find('div.employee_<%= @employee.id %>').hide(); # if i change the id to employee.id i get another error

Контроллер:

format js

ошибка консоли:

NoMethodError in Employees#destroy

Showing 
/Desktop/bad/current/app/views/employees/destroy.js.erb where line #1 
raised:
undefined method `id' for nil:NilClass

Rails.root: /Desktop/bad/current

Application Trace
app/views/employees/destroy.js.erb:1:in 
`_app_views_employees_destroy_js_erb__4462192751889852231_70177039108760'

1 Ответ

2 голосов
/ 28 мая 2019

После того, как вы уничтожили запись - вы больше не должны ее использовать, и у нее больше нет id. Для вашего случая вы можете сохранить идентификатор перед удалением в контроллере:

@deleted_employee_id = @employee.id
@employee.destroy
...

и в формате js ...find('div.employee_<%= @deleted_employee_id %>').hide()...

PS. Также распространенной практикой является использование «мягкого удаления» - в модели есть флаг, который указывает, была ли запись «удалена», и установите ее в действии destroy, без фактического удаления, это полезно, если пользователь захочет «отменить». ».

...