Как выбрать элемент clicked с помощью jQuery - используя $ (this) и т.д. - в ответе файла js.erb с сервера?
У меня есть таблица проектов и хотелось бы добавить новый проект прямо под строку, на которую я нажал кнопку "Добавить проект". Если возможно, я хотел бы использовать универсальный селектор jQuery и не должен полагаться на конкретные идентификаторы css.
Вот моя таблица проектов:
<table class="table">
<tr class="active">
<th style="width:31%">Project</th>
<th style="width:42%">Notes</th>
<th style="width:10%">Due</th>
<th style="width:8%">Priority</th>
<th style="width:3%"></th>
<th style="width:3%"></th>
<th style="width:3%"></th>
</tr>
<% @projects.each_with_index do |project, index| %>
<tr id="row-<%= index + 1 %>">
<td><%= project.title %></td>
<td><%= project.notes %></td>
<td><%= project.due_date %></td>
<td><%= project.priority %></td>
<td><a href="#">Edit</a></td>
<td><a href="#">Del</a></td>
<td><%= link_to "+", new_project_path(@project, :row => index + 1), :remote => true, :class => "add-project" %></td>
</tr>
<% end %>
</table>
Вот мое действие для создания:
def create
@project = Project.new(params[:project])
@project.save
respond_with(@project)
end
Вот мой файл create.js.erb:
$(this).closest("tr").after("<%= j(render "new_project_row") %>");
И вот моя часть new_project_row:
<tr>
<td><%= @project.title %></td>
<td><%= @project.notes %></td>
<td><%= @project.due_date %></td>
<td><%= @project.priority %></td>
<td><a href="#">Edit</a></td>
<td><a href="#">Del</a></td>
<td>#</td>
</tr>
Ошибок не возникает. Новый проект добавляется в базу данных правильно, но новая строка не вставляется в таблицу проектов. Любая помощь с этим будет принята с благодарностью.
Поскольку вы уже передаете :row
в своем действии create, сохраните ее в переменной экземпляра, чтобы она была доступна в вашем представлении. Затем в js.erb вы можете сделать
$("##(@row)").after("<%= j(render "new_project_row") %>");
Поскольку на самом деле это будет id
данного tr
вы должны просто иметь возможность вызывать сразу.