【问题标题】:Delete post from another controller?从另一个控制器中删除帖子?
【发布时间】:2019-11-30 15:22:19
【问题描述】:

我的应用中有两个控制器。截至目前 - 用户和发布。到目前为止,用户控制器只有这些方法 - 索引、新建、创建和显示。我仅在 users#show 视图页面中显示用户帖子。

我想添加删除帖子的功能。我在帖子的控制器中添加了删除帖子的方法....但是当我单击删除按钮时,它显示错误找不到UsersController的“销毁”操作

这是真的,我在用户控制器中没有销毁方法。

如何仅使用帖子控制器删除帖子?我不想在这里使用用户控制器来删除帖子-我想添加功能以将来删除用户

class UsersController < ApplicationController

  def index
    @users = User.all
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(set_params)
    if @user.save
      UserNotifierMailer.send_signup_email(@user).deliver
      flash[:success] ="Success"
      redirect_to new_sessions_path and return
    else
      render 'new'
    end

  end

  def show
    @user = User.find(params[:id])
    @posts = @user.posts
  end

  private

  def set_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  end

  def post_params
    params(:post.require).permit(:title, :body)
  end

end

用户#show

<div class="col-md-8">
    <h1> Posts ( <%= @posts.count %> ) </h1>
    <%= @posts.each do |p| %>

        <div class="form-field">
            <h4><b><%= p.title %></b>  <%= link_to "Edit", edit_post_path(p.id), class: "btn 
                 btn-warning col-md-2-offset", style: "align-right" %><%= link_to "Delete", 
                 @post , method: :delete,data: { confirm: "You sure? "}, class: "btn btn-danger 
                 col-md-2-offset", style: "align-right" %></h4> 
            <%= p.body %>
        </div>
    <% end %>

后控制器 - 删除方法

 def destroy
     @post = Post.find(params[:id])
     @post.destroy
     flash.now[:success] = "Succesfully Deleted"
     redirect_to user_path(current_user)
  end

路线

Rails.application.routes.draw do
  root 'posts#index'
  resources :users
  resources :posts
  resource :sessions, only: [:new, :create, :destroy]
  resources :passwords, only: [:new, :create, :edit, :update]
end

Rake 路由:DELETE /posts/:id(.:format) posts#destroy

【问题讨论】:

    标签: ruby ruby-on-rails-5 ruby-on-rails-6


    【解决方案1】:

    我想你的意思是p 而不是@post

    <%= link_to "Delete", p, ... %>
    

    在您看来,@post 很可能是nil,这让link_to 感到困惑,因此出现了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 2017-03-23
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-11-28
      • 1970-01-01
      相关资源
      最近更新 更多