【问题标题】:NameError - uninitialized constantNameError - 未初始化的常量
【发布时间】:2015-10-29 18:15:13
【问题描述】:

我正在使用 Ruby on Rails 4,我的项目是关于一个 HR 应用程序。员工可以通过他的个人资料页面创建请假请求,但是我在他的个人资料页面中创建表单,我只想创建一个链接到请求控制器但我遇到了这个错误:

NameError in Employees#show Showing /home/user/workspace/hrapp/app/views/employees/show.html.erb where line #50 raised:

uninitialized constant Requests’

Extracted source (around line #50):

48 </p>
49 <%= link_to 'Edit', edit_employee_path(@employee) %> 
50 <%= link_to ‘My Annual Leave Requests’, controller:'requests' %>
51 <%= link_to 'Back', employees_path %>  

我尝试了这个解决方案:https://hackhands.com/rails-nameerror-uninitialized-constant-class-solution/

但它不起作用,我没有找到这个错误的通用答案。

这是 rake 路线:

user@snf-34155:~/workspace/hrapp$ rake routes
           Prefix Verb   URI Pattern                                         Controller#Action
employee_requests GET    /employees/:employee_id/requests(.:format)          requests#index
                  POST   /employees/:employee_id/requests(.:format)          requests#create
                  PUT    /employees/:employee_id/requests/:id(.:format)      requests#update
                  DELETE /employees/:employee_id/requests/:id(.:format)      requests#destroy
        employees GET    /employees(.:format)                                employees#index
                  POST   /employees(.:format)                                employees#create
     new_employee GET    /employees/new(.:format)                            employees#new
    edit_employee GET    /employees/:id/edit(.:format)                       employees#edit
         employee GET    /employees/:id(.:format)                            employees#show
                  PATCH  /employees/:id(.:format)                            employees#update
                  PUT    /employees/:id(.:format)                            employees#update
                  DELETE /employees/:id(.:format)                            employees#destroy
             root GET    /                                                   welcome#index

我想我只需要编写正确的路线,但我尝试了其中的一些,但还是没有用。

请问,有人可以帮忙吗?

提前谢谢:)

app/controllers/requests_controller.rb

class RequestsController < ApplicationController
def index
  @employee = Employee.find(params[:employee_id])
  @request = @employee.requests.all
end

def show
  @employee = Employee.find(params[:employee_id])
  @request = @employee.requests.find(params[:id])
end

def new
  @employee = Employee.find(params[:employee_id])
  @request = @employee.requests.new
end

 def create
    @employee = Employee.find(params[:employee_id])
    @request = @employee.requests.create(request_params)
    redirect_to show_employee_path(@employee)
  end

  def destroy
    @employee = Employee.find(params[:employee_id])
    @request = @employee.requests.find(params[:id])
    @request.destroy
    redirect_to show_employee_path(@employee)
  end

  private
    def request_params
      params.require(:request).permit(:start_date, :end_date, :considerations)
    end
end

【问题讨论】:

  • 你有控制器叫requests_controller 吗?
  • 我不知道这是否是问题所在,但出现错误的行混合了单引号和“webby”单引号:&lt;%= link_to ‘My Annual Leave Requests’, controller:'requests' %&gt;。尝试将围绕“我的年假请求”的引用样式更改为与围绕“请求”的引用样式相同。
  • 是的@Pavan 我只是在这里更新 Î

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


【解决方案1】:

根据您发布的代码

</p>
<%= link_to 'Edit', edit_employee_path(@employee) %> 
<%= link_to ‘My Annual Leave Requests’, controller:'requests' %>
<%= link_to 'Back', employees_path %>  

‘My Annual Leave Requests’ 似乎使用了特殊的引号字符。您是否偶然从其他来源复制并粘贴了该内容?

我可以看到的一个修复是手动将引号更改为使用双引号 "

我注意到您的错误未初始化常量请求的末尾还包含一个引号。您是否也尝试修复控制器:“请求”?

【讨论】:

  • 我从我的博客应用程序中复制,只是更改了名称和控制器,这个应用程序是基于我的博客应用程序,我使用的例子。
  • 你有一个叫RequestsController的控制器吗?哎呀没关系,我看到你这样做了
  • 我注意到您的错误uninitialized constant Requests’ 末尾还包含一个引号。您是否也尝试修复controller:"requests"
  • 现在我用双引号得到了这个:ActionController::UrlGenerationError in Employees#show Showing /home/user/workspace/hrapp/app/views/employees/show.html.erb where line # 50 引发:没有路由匹配 {:action=>"index", :controller=>"requests", :id=>"3"}
  • 很好,这是一个不同的错误,通常很好。所有这些新错误意味着匹配器requests#index 中没有路由,只有id 作为参数。您的链接似乎缺少 employee_id 参数。尝试做类似&lt;%= link_to "My Annual Leave Requests", controller:"requests", employee_id: @employee.id %&gt;
猜你喜欢
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 2016-06-12
  • 2015-03-01
  • 2018-06-26
相关资源
最近更新 更多