Невозможно получить ссылку «удалить» для работы на панели администратора в Ruby on Rails - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в Ruby On Rails и в настоящее время создаю стандартные операции CRUD для панели администратора, которую я создаю вручную в приложении (без использования гемов администратора).

Тем не менее, когда я вызываю ссылку удаления на моей странице show.html.erb, ничего не происходит (без экрана ошибок или каких-либо других отзывов в браузере).Javascript полностью включен, и я считаю, что у меня установлены правильные гемы.

Может кто-нибудь сообщить мне, как лучше всего это исправить?Я свяжу все соответствующие файлы ниже:

app / views / admin / posts / show.html.erb

<h1><%= @post.title %></h1>
<p><%= @post.body %></p><br>
<%= link_to "delete", [:admin, @post], method: :delete %>

controllers / admin / posts_controller.rb

class Admin::PostsController < Admin::ApplicationController
  def index
    @post = Post.all
  end

  def show 
    @post = Post.friendly.find(params[:id])
  end

  def new
    @post = Post.new
  end

  def create
    post_params = params.require(:post).permit(:title, :body, :slug)
    @post = Post.new(post_params)
    @post.save
    redirect_to [:admin, @post]
  end

  def destroy
    @post = Post.friendly.find(params[:id])
    @post.destroy
  end 
end

app / assets / javascripts / admin.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
// vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//

//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
//= require jquery
//= require jquery_ujs

app / assets / stylesheets / admin.css

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *
 *= require_tree .
 *= require_self
 */

app / views / admin / admin.html.erb

 <!DOCTYPE html>
<html>
  <head>
    <title>JonBlog</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'admin', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

Вывод на консоль при нажатии «delete».

Started GET "/admin/posts/spiral" for 127.0.0.1 at 2018-10-03 23:43:48 +0100
Processing by Admin::PostsController#show as HTML
  Parameters: {"id"=>"spiral"}
  Post Load (0.2ms)  SELECT  "posts".* FROM "posts" WHERE "posts"."slug" = ? LIMIT ?  [["slug", "spiral"], ["LIMIT", 1]]
  ↳ /Users/jonathonday/.rvm/gems/ruby-2.3.1/gems/friendly_id-5.2.4/lib/friendly_id/finder_methods.rb:60
  Rendering admin/posts/show.html.erb
  Rendered admin/posts/show.html.erb (1.0ms)
Completed 200 OK in 18ms (Views: 12.2ms | ActiveRecord: 0.2ms)

rout.rb

Rails.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  namespace :admin do
    resources :posts
  end

  resources :comments

end

1 Ответ

0 голосов
/ 04 октября 2018

Обратите внимание, что получаемый маршрут является запросом GET, и вы выполняете действие show.Если вы проверяете HTML-код страницы, держу пари, она ничего не говорит о методе удаления.Поэтому вызов link_to в том виде, в котором он написан, не должен проходить правильно :method.

Я немного потренировался, но что произойдет, если вы попробуете что-то вроде link_to("Delete", admin_post_path(@post), method: :delete) (то есть с использованием строкиURL вместо массива для спецификатора домена / ресурса)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...