我有工作模型。在动作表演中,我有带有方法的fontawesome图标:删除。当我编辑作业时一切正常,但是当我单击带有方法删除的图标时,什么都没有发生:(在本地主机上,它的工作正常,但仅在生产环境中动作编辑://当我单击垃圾桶图标时,页面似乎只是在刷新。 / p>
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
答案 0 :(得分:0)
您将删除链接置于编辑链接内,因此单击它时,单击编辑
我认为应该是这样
<% 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 %>
答案 1 :(得分:0)
也许看看您的资产管道?如果它在本地运行而不在生产中运行,则可能缺少一些JS代码。
答案 2 :(得分:0)
首先,它应该在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 %>
i.e尝试建立路径job_path(@job)
,而不仅仅是@job
。
答案 3 :(得分:0)
请,我不明白,为什么要在新动作@job = Job.new
中添加该行代码。您已经定义了@job = current_user.jobs.build
。对此我有点困惑。可以删除该行,然后重试。我认为您已经定义了两次。
答案 4 :(得分:-1)
您在控制器中定义了: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 %>