diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index dd32de7..919e6fc 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -9,7 +9,7 @@ class TagsController < ApplicationController image.save render partial: "tags/tag", locals: { image: image, tag: tag } else - head 200, content_type: "text/html" + head :no_content, content_type: "text/html" end end @@ -19,6 +19,6 @@ class TagsController < ApplicationController image.tags.delete(tag) image.save - render json: { status: :ok } + head :no_content end end diff --git a/app/javascript/controllers/tag_controller.js b/app/javascript/controllers/tag_controller.js index fb7d6e8..eecb056 100644 --- a/app/javascript/controllers/tag_controller.js +++ b/app/javascript/controllers/tag_controller.js @@ -5,7 +5,6 @@ export default class extends Controller { static targets = ["name"]; delete(event) { - const imageId = this.element.dataset.imageId; const tag = this.nameTarget.innerText; event.preventDefault(); diff --git a/app/javascript/controllers/tags_controller.js b/app/javascript/controllers/tags_controller.js index 197dfa0..ab67dc9 100644 --- a/app/javascript/controllers/tags_controller.js +++ b/app/javascript/controllers/tags_controller.js @@ -1,11 +1,20 @@ import { Controller } from "stimulus"; +import ajaxService from "../services/ajax_service"; export default class extends Controller { static targets = ["tag", "tagList"] - onPostSuccess(event) { - let [data, status, xhr] = event.detail; - this.tagListTarget.innerHTML += xhr.response; - this.tagTarget.value = ""; + create(event) { + const tag = this.tagTarget.value; + + event.preventDefault(); + + ajaxService.createTag(tag) + .then(response => { + if (response.status == 200) { + this.tagListTarget.innerHTML += response.data; + }; + this.tagTarget.value = ""; + }) } } diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index 7c49ac0..a04b5aa 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -7,12 +7,9 @@ // To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate // layout file, like app/views/layouts/application.html.erb -import Rails from "rails-ujs"; import { Application } from "stimulus"; import { definitionsFromContext } from "stimulus/webpack-helpers"; -Rails.start(); - const application = Application.start(); const context = require.context("controllers", true, /.js$/); application.load(definitionsFromContext(context)); diff --git a/app/javascript/services/ajax_service.js b/app/javascript/services/ajax_service.js index 2d7e395..2949f32 100644 --- a/app/javascript/services/ajax_service.js +++ b/app/javascript/services/ajax_service.js @@ -18,12 +18,15 @@ const config = () => ({ headers: { "X-CSRF-Token": csrfToken() } }); - export default { createTag: (tag) => { + return axios.post(`/user/images/${imageId()}/tags`, { tag }, config()); }, deleteTag: (tag) => { - return axios.delete(`/user/images/${imageId()}/tags/${tag}.json`, config()); + return axios.delete( + `/user/images/${imageId()}/tags/${encodeURIComponent(tag)}`, + config() + ); } } diff --git a/app/views/images/_info.html.erb b/app/views/images/_info.html.erb index a12b376..9b4f24f 100644 --- a/app/views/images/_info.html.erb +++ b/app/views/images/_info.html.erb @@ -3,15 +3,9 @@ <%= render "tags/tags", image: image, tags: image.tags %>