ruby-on-rails - 员工控制器中的 ActiveRecord::RecordNotFound#edit
问题描述
尝试编辑员工时出现错误。完整的错误信息是:
员工控制器中的 ActiveRecord::RecordNotFound#edit
找不到“id”=5 的公司(*这取决于我点击的公司)
提取的源代码(在 #57 行附近):
def find_company
@company = Company.find(permitted_params[:company_id])
end
end
有了这个应用程序,我就有了公司和员工。我可以在公司内添加、显示和删除员工,但由于此错误,我无法对其进行编辑。我是 Rails 新手,不确定我哪里出错了。
路线.rb:
Rails.application.routes.draw do
get 'welcome/index'
resources :companies do
resources :employees
end
root 'welcome#index'
get 'companies/new'
end
员工控制器:
class EmployeesController < ApplicationController
before_action :find_company
before_action :set_employee, only: %i[show edit update destroy]
def index
@employees = @company.employees
end
def show
@employee = Employee.find(params[:id])
end
def new
@employee = @company.employees.build
end
def edit
@employee = Employee.find(params[:id])
end
def create
@employee = @company.employees.build(permitted_params[:employee])
if @employee.save
redirect_to company_employees_path(@company)
else
render 'new'
end
end
def update
if @employee.update(forename: permitted_params[:forename],
surname: permitted_params[:surname])
redirect_to company_employees_path(@company)
else
render 'edit'
end
end
def destroy
@employee.destroy
redirect_to company_employees_path(@company)
end
private
def set_employee
@employee = Employee.find(permitted_params[:id])
end
def permitted_params
params.permit!
end
def find_company
@company = Company.find(permitted_params[:company_id])
end
end
公司控制人:
class CompaniesController < ApplicationController
def index
@company = Company.all
end
def show
@company = Company.find(permitted_params[:id])
# @company = Company.first
end
def new
@company = Company.new
end
def create
@company = Company.new(permitted_params[:company])
if @company.save
redirect_to @company
else
render 'new'
end
end
def destroy
@company = Company.find(permitted_params[:id])
@company.destroy
redirect_to companies_path
end
private
def permitted_params
params.permit!
end
end
耙路线输出:
Prefix Verb URI Pattern Controller#Action
welcome_index GET /welcome/index(.:format) welcome#index
company_employees GET /companies/:company_id/employees(.:format) employees#index
POST /companies/:company_id/employees(.:format) employees#create
new_company_employee GET /companies/:company_id/employees/new(.:format) employees#new
edit_company_employee GET /companies/:company_id/employees/:id/edit(.:format) employees#edit
company_employee GET /companies/:company_id/employees/:id(.:format) employees#show
PATCH /companies/:company_id/employees/:id(.:format) employees#update
PUT /companies/:company_id/employees/:id(.:format) employees#update
DELETE /companies/:company_id/employees/:id(.:format) employees#destroy
companies GET /companies(.:format) companies#index
POST /companies(.:format) companies#create
new_company GET /companies/new(.:format) companies#new
edit_company GET /companies/:id/edit(.:format) companies#edit
company GET /companies/:id(.:format) companies#show
PATCH /companies/:id(.:format) companies#update
PUT /companies/:id(.:format) companies#update
DELETE /companies/:id(.:format) companies#destroy
root GET / welcome#index
companies_new GET /companies/new(.:format) companies#new
公司 show.html.erb
<h3><%= @company.name %></h3>
<p><%= @company.details %></p>
<h3>Employees</h3>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Forename</th>
<th>Surname</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% for employee in @company.employees %>
<tr>
<td><%= employee.id %></td>
<td><%= employee.forename %></td>
<td><%= employee.surname %></td>
<td><%= link_to "Edit", edit_company_employee_path(employee), class: "btn btn-primary btn-sm" %></td>
</tr>
<% end %>
</tbody>
</table>
<%= link_to "Add Employee", new_company_employee_path(@company), class: "btn btn-primary" %>
<%= link_to "Back to companies List", companies_path, class: "btn btn-outline-primary" %>
请问有人可以帮忙吗?
解决方案
尝试传递@company
给edit_company_employee_path
.
<%= link_to "Edit", edit_company_employee_path(@company, employee), class: "btn btn-primary btn-sm" %>
推荐阅读
- wpf - GlyphRun 和光标的准确位置 (WPF)
- javascript - 如何在 React 中将 CSV 文件转换为 JSON 格式?
- mqtt - MQTT 订阅 100k 保留消息
- ionic-framework - 在 ionic 3 中刷新 app.components
- c# - WPF:如何在数据网格中始终有一个新行可用?
- jenkins - Jenkins copyArtifact 权限
- rest - Apache Camel 路由 API 调用消息队列
- hibernate - 使用 Spring 进行 Hibernate 一对一延迟加载
- erlang - 无法删除我知道存在的 mnesia 表
- vba - 使用 SharePoint URL 的 CreateItemFromTemplate 不起作用