【问题标题】:Destroy Post issue, renders show action and does not destroy post销毁帖子问题,呈现显示动作并且不销毁帖子
【发布时间】:2013-12-28 21:58:22
【问题描述】:

当我点击 Destroy 链接时,帖子被打开(呈现显示动作)而不是被销毁。

视图中的行:

<%= link_to 'Destroy', post_path(post),
                method: :delete, data: { confirm: 'Are you sure?' } %>

posts_controller.rb 片段:

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

耙路线:

                posts GET    /posts(.:format)                            posts#index
                      POST   /posts(.:format)                            posts#create
             new_post GET    /posts/new(.:format)                        posts#new
            edit_post GET    /posts/:id/edit(.:format)                   posts#edit
                 post GET    /posts/:id(.:format)                        posts#show
                      PATCH  /posts/:id(.:format)                        posts#update
                      PUT    /posts/:id(.:format)                        posts#update
                      DELETE /posts/:id(.:format)                        posts#destroy

在 routes.rb 中

  resources :posts do
    resources :comments
  end

当我点击销毁链接时在 development.log 中:

Started GET "/posts/5" for 127.0.0.1 at 2013-12-28 21:51:40 +0000
Processing by PostsController#show as HTML
  Parameters: {"id"=>"5"}
  [1m[35mPost Load (0.2ms)[0m  SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1  [["id", "5"]]
  [1m[36mComment Load (0.2ms)[0m  [1mSELECT "comments".* FROM "comments" WHERE "comments"."post_id" = ?[0m  [["post_id", 5]]
  Rendered collection (0.0ms)
  Rendered comments/_form.html.erb (7.6ms)
  Rendered posts/show.html.erb within layouts/application (12.6ms)
  [1m[35mAdmin Load (0.2ms)[0m  SELECT "admins".* FROM "admins" WHERE "admins"."id" = 1 ORDER BY "admins"."id" ASC LIMIT 1
Completed 200 OK in 18ms (Views: 15.8ms | ActiveRecord: 0.8ms)

我知道问题可能是由于我在 routes.rb 中使用“resources :posts”引起的,但是我该如何删除帖子呢?

如果您需要任何其他信息,请告诉我。 谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    应该不会吧

    <%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %>
    

    你在做什么:

    <%= link_to 'Destroy', post_path(post),method: :delete, data: { confirm: 'Are you sure?' }%>
    

    因此,当您单击链接时,您将给出post_path(post),这表明路线可以转到 post_path 并传递我点击的 那个 帖子。而您应该做的只是给它post 对象,然后rails 会处理其余的事情。

    【讨论】:

    • 感谢您再次帮助大卫。但是,当我使用您的建议时,我得到了相同的确切反应。它呈现显示动作...
    • @Stefanos.Ioannou 没问题。好的,您可以尝试将redirect_to posts_path 替换为redirect_to posts_url
    • 同样的问题。好吧,即使我点击它也不会破坏帖子。我认为它甚至没有使用 Destroy 方法。
    【解决方案2】:

    必须在 /layout/application.html.erb 中添加这个

    <%= javascript_include_tag 'application' %>
    <%= csrf_meta_tag %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2016-12-05
      相关资源
      最近更新 更多