繁体   English   中英

rails方法:删除不起作用

[英]rails method :delete not working

我有工作模型。 在动作表演中,我有带有方法的fontawesome图标:删除。 当我编辑作业时一切正常,但是当我单击带有方法删除的图标时,什么也没发生:(在本地主机上,它的工作正常,但仅在生产环境中动作编辑:/当我单击垃圾桶图标时,页面似乎只是在刷新。

show.html.erb

  <% if job_author(@job) %>
 <%= link_to edit_job_path(@job) do %>
     <i class="far fa-edit" style="font-size: 30px; margin-top: 15px"></i>
     <%= link_to @job, method: :delete do %>
  <i class="fas fa-trash-alt" style="font-size: 30px; margin-top: 15px"></i>
     <% else %>

     <% end %>
<% end %>
<% end %>

jobs_controller.rb

class JobsController < ApplicationController
  before_action  :set_job, only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!, except: [:index, :show]

  def set_job
    @job = Job.find(params[:id])
  end
  def destroy
    @job = Job.find(params[:id])
    @job.destroy
    respond_to do |format|
      format.html { redirect_to root_path }
      format.json { head :no_content }
    end
  end
  def index
    @jobs = Job.all
      if params[:search]
      @jobs = Job.search(params[:search]).order("created_at DESC")
    else
      @jobs = Job.all.order("created_at DESC")
      end
   if(params.has_key?(:job_type))
        @jobs = Job.where(job_type: params[:job_type]).order("created_at desc")
   end
  if(params.has_key?(:job_category))
      @jobs = Job.where(job_category: params[:job_category]).order("created_at desc")
  end
  end

  def show
    @job = Job.find(params[:id])
  end


  def new
    @job = current_user.jobs.build
    @job = Job.new
  end

  def edit
    if current_user.id == @job.user.id
      @job = Job.find(params[:id])
  else
      flash[:danger] = "You do not have authorization to edit this post"
      redirect_to root_path
    end
  end

  def create
      @job = current_user.jobs.build(job_params)
      job_type = params[:job_type]
      job_salary = params[:salary]
      job_title = params[:title]
      job_category = params[:job_category]
      job_technologies = params[:technologies]
      job_additional_technologies = params[:additional_technologies]
      job_data = params[:data]
      job_godzina = params[:godzina]
      respond_to do |format|
        if @job.save
            format.html { redirect_to 'https://commerce.coinbase.com/checkout/9d7f7bae-db41-4128-b0cd-b2c73b5585d8'  }
        else
          format.html { render :new }
          format.json { render json: @job.errors, status: :unprocessable_entity }
        end
      end
  end

  def update
   @job = Job.find(params[:id])
   respond_to do |format|
     if @job.update(job_params)
       format.html { redirect_to @job }
       format.json { render :show, status: :ok, location: @job }
     else
       format.html { render :edit }
       format.json { render json: @job.errors, status: :unprocessable_entity }
     end
   end
  end

  def job_params
   params.require(:job).permit(:title, :description, :requirements, :url, :job_type, :location, :job_author, :remote, :apply_url, :avatar, :salary, :multisport_card, :medical_care, :cold_drinks, :parking, :job_category, :technologies, :additional_technologies, :data, :godzina)
  end
end

您将删除链接放在编辑链接内,因此当单击它时,单击编辑

我认为应该是这样

    <% if job_author(@job) %>
      <%= link_to edit_job_path(@job) do %>
         <i class="far fa-edit" style="font-size: 30px; margin-top: 15px"></i>
      <% end %>
      <%= link_to @job, method: :delete do %>
       <i class="fas fa-trash-alt" style="font-size: 30px; margin-top: 15px"> </i>
     <% end %>

    <% else %>

    <% end %>

也许看看您的资产管道? 如果它在本地运行但不在生产中运行,则可能缺少一些JS代码。

https://github.com/rails/rails/issues/24459

首先,它应该在edit标签之外。

其次,我认为应该如下:

<%= link_to 'Destroy', job_path(@job), method: :delete do %>
    <i class="fas fa-trash-alt" style="font-size: 30px; margin-top: 15px"></i>
<% end %>

即尝试使路径job_path(@job)不只是@job

请,我不明白,为什么要在新动作中添加该行代码: @job = Job.new 您已经定义了@job = current_user.jobs.build 。对此我有点困惑。可以删除该行然后再试一次。我认为您已经定义了两次。

您在控制器中定义了:destroy方法,而不是:delete 另外,您的缩进和嵌套是不正确的。 尝试这个:

<% if job_author(@job) %>
    <%= link_to edit_job_path(@job) do %>
        <i class="far fa-edit" style="font-size: 30px; margin-top: 15px"></i>
    <% end %>
    <%= link_to destroy_job_path(@job), method: :delete do %>
        <i class="fas fa-trash-alt" style="font-size: 30px; margin-top: 15px"></i>
    <% end %>
<% else %>
<% end %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM