В моем приложении rails у меня есть страница с элементами, которая содержит теги для элемента. Пользователи могут добавлять теги к элементам. Я хочу, чтобы текущий пользователь мог удалять теги, но только для тегов, которые были добавлены текущим пользователем к этому конкретному элементу. Я хочу сделать это через ajax. Мой код, чтобы сделать список тегов для представления выглядит следующим образом:Как разрешить текущему пользователю удалять принадлежащие тегам с помощью act-as-taggable-on
<div id="tags">Tags:
<% @item.all_tags_list.each do |t| %>
<span class="tag-container">
<%= link_to t, tag_path(t) %>
<% if @item.tags_from(current_user).include?(t) %>
<span>
<%= link_to "×", '#' %>
</span>
<% end %>
</span>
<% end %>
</div>
Сформированная строка выглядит примерно так: Tags: tag1 tag2 tag3 x
. В этом случае текущий тег только тег3 был добавлен текущим пользователем. Я хочу, чтобы текущий пользователь мог щелкнуть x и удалить tag3 из элемента. Если tag2 также был добавлен текущим пользователем, он будет выглядеть так: Tags: tag1 tag2 x tag3 x
.
Как настроить маршрут и метод для элемента item_controller для этого? Я считаю, что это будет в конечном итоге что-то вроде:
def remove_tag
@item = Item.find_by_id(params[:id])
tag = ????????
@item.all_tags_list.remove(tag)
@item.save
respond_to do |format|
format.js
end
end
но как я могу сказать контроллеру, какой тег я хочу удалить при нажатии х, и как бы я создать маршрут. Вероятно, будет несколько тегов с x рядом с ними на данной странице.
Не ваш полный ответ, но если вы хотите, чтобы current_user удалял только теги, что-то вроде этого: 'tag = current_user.tags.find (params [: id])', поэтому в основном вам нужно указать его только текущим пользователям теги. –
Я не думаю, что это правильно. Я хочу удалить теги на элементе, принадлежащем текущему пользователю. Ваша строка кода найдет теги для пользователя, которые в моем случае их нет. – user4584963
Концепция такая же. Затем разверните часть 'current_user.items.find (...)'. –