错误 - 未初始化的常量 Project::Ticket
Posted
技术标签:
【中文标题】错误 - 未初始化的常量 Project::Ticket【英文标题】:Error - uninitialized constant Project::Ticket 【发布时间】:2014-04-17 00:40:06 【问题描述】:class TicketsController < ApplicationController
before_action :set_project
before_action :set_ticket, only: [:show, :edit, :update, :destroy]
def show
end
def set_ticket
@ticket = @project.tickets.find(params[:id])
end
def set_project
@project = Project.for(current_user).find(params[:project_id])
rescue ActiveRecord::RecordNotFound
flash[:alert] = "The project you were looking " +"for could not be found."
redirect_to root_path
end
end
项目的模板-show.html.erb
<% @project.tickets.each do |ticket| %>
<li>
#<%= ticket.id %> - <%= link_to ticket.title, [@project, ticket] %>
</li>
<% end %>
我收到错误:uninitialized constant Project::Ticket
显示模板的第一行
这是在我的路线文件中
resources :projects do
resources :tickets
end
回溯
'Started GET "/projects/6" for 127.0.0.1 at 2014-03-12 21:47:37 +0530 Processing by ProjectsController#show as HTML Parameters: "id"=>"6" ←[1m←[35mUser Load (0.0ms)←[0m SELECT "users".* FROM "users" WHERE "users"."i d" = ? LIMIT 1 [["id", 4]] ←[1m←[36mProject Load (0.0ms)←[0m ←[1mSELECT "projects".* FROM "projects" WHE RE "projects"."id" = ? LIMIT 1←[0m [["id", "6"]] ←[1m←[35mPermission Load (0.0ms)←[0m SELECT "permissions".* FROM "permissions " WHERE "permissions"."user_id" = ? [["user_id", 4]] Rendered projects/show.html.erb within layouts/application (19.0ms) Completed 500 Internal Server Error in 27ms ActionView::Template::Error (uninitialized constant Project::Ticket): 11: <% end %> 12: 13: <ul id='tickets'> 14: <% @project.tickets.each do |ticket| %> 15: <li> 16: #<%= ticket.id %> - <%= link_to ticket.title, [@project, ticket] %> 17: </li> app/views/projects/show.html.erb:14:in `_app_views_projects_show_html_erb__106 1934704_22827060' Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.0.1/lib/action_dispa tch/middleware/templates/rescues/_trace.erb (2.0ms) Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.0.1/lib/action_dispa tch/middleware/templates/rescues/_request_and_response.erb (1.0ms) Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.0.1/lib/action_dispa tch/middleware/templates/rescues/template_error.erb within rescues/layout (35.0m s)'
完整的跟踪-
activerecord (4.0.1) lib/active_record/inheritance.rb:125:in `compute_type' activerecord (4.0.1)
lib/active_record/reflection.rb:178:in
klass' activerecord (4.0.1) lib/active_record/associations/association.rb:123:in
klass' 活动记录(4.0.1) lib/active_record/associations/collection_association.rb:37:inreader' activerecord (4.0.1) lib/active_record/associations/builder/association.rb:70:in
tickets' app/views/projects/show.html.erb:14:in_app_views_projects_show_html_erb__1061934704_22827060' actionpack (4.0.1) lib/action_view/template.rb:143:in
block 在渲染中' activesupport (4.0.1) lib/active_support/notifications.rb:161:ininstrument' actionpack (4.0.1) lib/action_view/template.rb:141:in
render' 动作包 (4.0.1) lib/action_view/renderer/template_renderer.rb:49:inblock (2 levels) in render_template' actionpack (4.0.1) lib/action_view/renderer/abstract_renderer.rb:38:in
block in 仪器的主动支持 (4.0.1) lib/active_support/notifications.rb:159:inblock in instrument' activesupport (4.0.1) lib/active_support/notifications/instrumenter.rb:20:in
instrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:ininstrument' actionpack (4.0.1) lib/action_view/renderer/abstract_renderer.rb:38:in
instrument' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:48:inblock in render_template' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:56:in
render_with_layout' 动作包 (4.0.1) lib/action_view/renderer/template_renderer.rb:47:inrender_template' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:17:in
render' actionpack (4.0.1) lib/action_view/renderer/renderer.rb:42:inrender_template' actionpack (4.0.1) lib/action_view/renderer/renderer.rb:23:in
render' 动作包 (4.0.1) lib/abstract_controller/rendering.rb:127:in_render_template' actionpack (4.0.1) lib/action_controller/metal/streaming.rb:219:in
_render_template' actionpack (4.0.1) lib/abstract_controller/rendering.rb:120:inrender_to_body' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:33:in
render_to_body' actionpack (4.0.1) lib/action_controller/metal/renderers.rb:26:inrender_to_body' actionpack (4.0.1) lib/abstract_controller/rendering.rb:97:in
render' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:16:inrender' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in
block (2 级) 在渲染'activesupport (4.0.1) lib/active_support/core_ext/benchmark.rb:12:inblock in ms' C:/Ruby193/lib/ruby/1.9.1/benchmark.rb:295:in
realtime' activesupport (4.0.1) lib/active_support/core_ext/benchmark.rb:12:inms' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in
block in 渲染'动作包(4.0.1) lib/action_controller/metal/instrumentation.rb:84:incleanup_view_runtime' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:25:in
cleanup_view_runtime' 动作包 (4.0.1) lib/action_controller/metal/instrumentation.rb:40:inrender' actionpack (4.0.1) lib/action_controller/metal/implicit_render.rb:10:in
default_render' actionpack (4.0.1) lib/action_controller/metal/implicit_render.rb:5:insend_action' actionpack (4.0.1) lib/abstract_controller/base.rb:189:in
process_action' 动作包 (4.0.1) lib/action_controller/metal/rendering.rb:10:inprocess_action' actionpack (4.0.1) lib/abstract_controller/callbacks.rb:18:in
block in process_action' activesupport (4.0.1) lib/active_support/callbacks.rb:433:in_run__975686654__process_action__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:in
run_callbacks' 动作包 (4.0.1) lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack (4.0.1) lib/action_controller/metal/rescue.rb:29:in
process_action' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:31:inblock in process_action' activesupport (4.0.1) lib/active_support/notifications.rb:159:in
block in instrument' 主动支持 (4.0.1) lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:in
instrument' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:30:inprocess_action' actionpack (4.0.1) lib/action_controller/metal/params_wrapper.rb:245:in
process_action' 活动记录(4.0.1) lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.0.1) lib/abstract_controller/base.rb:136:in
process' 动作包 (4.0.1) lib/abstract_controller/rendering.rb:44:inprocess' actionpack (4.0.1) lib/action_controller/metal.rb:195:in
dispatch' actionpack (4.0.1) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.0.1) lib/action_controller/metal.rb:231:in
block in action' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:incall' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:80:in
dispatch' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:48:incall' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:71:in
block in call' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:ineach' actionpack (4.0.1) lib/action_dispatch/journey/router.rb:59:in
call' actionpack (4.0.1) lib/action_dispatch/routing/route_set.rb:680:incall' rack (1.5.2) lib/rack/etag.rb:23:in
call' 机架 (1.5.2) lib/rack/conditionalget.rb:25:incall' rack (1.5.2) lib/rack/head.rb:11:in
call' actionpack (4.0.1) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.0.1) lib/action_dispatch/middleware/flash.rb:241:in
call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
call' actionpack (4.0.1) lib/action_dispatch/middleware/cookies.rb:486:incall' activerecord (4.0.1) lib/active_record/query_cache.rb:36:in
call' 活动记录(4.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:incall' activerecord (4.0.1) lib/active_record/migration.rb:369:in
call' 动作包 (4.0.1) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.0.1) lib/active_support/callbacks.rb:373:in
_run__388525736__call__callbacks' activesupport (4.0.1) lib/active_support/callbacks.rb:80:inrun_callbacks' actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:27:in
call' actionpack (4.0.1) lib/action_dispatch/middleware/reloader.rb:64:incall' actionpack (4.0.1) lib/action_dispatch/middleware/remote_ip.rb:76:in
call' 动作包 (4.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' actionpack (4.0.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in
call' railties (4.0.1) lib/rails/rack/logger.rb:38:incall_app' railties (4.0.1) lib/rails/rack/logger.rb:20:in
block in call' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:inblock in tagged' activesupport (4.0.1) lib/active_support/tagged_logging.rb:25:in
tagged' activesupport (4.0.1) lib/active_support/tagged_logging.rb:67:intagged' railties (4.0.1) lib/rails/rack/logger.rb:20:in
call' actionpack (4.0.1) lib/action_dispatch/middleware/request_id.rb:21:incall' rack (1.5.2) lib/rack/methodoverride.rb:21:in
call' 机架 (1.5.2) lib/rack/runtime.rb:17:incall' activesupport (4.0.1) lib/active_support/cache/strategy/local_cache.rb:83:in
call' 机架 (1.5.2) lib/rack/lock.rb:17:incall' actionpack (4.0.1) lib/action_dispatch/middleware/static.rb:64:in
call' 机架 (1.5.2) lib/rack/sendfile.rb:112:incall' railties (4.0.1) lib/rails/engine.rb:511:in
call' railties (4.0.1) lib/rails/application.rb:97:incall' rack (1.5.2) lib/rack/lock.rb:17:in
call' 机架 (1.5.2) lib/rack/content_length.rb:14:incall' rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service' C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:138:inservice' C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:94:in
run' C:/Ruby193/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
class Project < ActiveRecord::Base
has_many :tickets, dependent: :destroy
has_many :permissions, as: :thing
scope :viewable_by, ->(user) do
joins(:permissions).where(permissions: action: "view",
user_id: user.id )
end
scope :for, ->(user) do
user.admin? ? Project.all : Project.viewable_by(user)
end
validates :name, presence: true
end
【问题讨论】:
您能说出错误的确切位置并将该行添加到问题中吗? 我写到错误出现在显示模板的第一行,即 - 你能真正显示回溯吗? 对不起,这里是新人...什么是回溯? 屏幕上显示的完整异常。所有的行都显示了异常的起源和传播方式。 【参考方案1】:没关系。上一个答案是错误的。
根据guides,您的设置应该可以工作。
您是否检查过以确保@project = Project.for(current_user).find(params[:project_id])
有效?执行 if 语句来检查 @project
是否存在可能比执行 rescue
更好。
【讨论】:
【参考方案2】:在您的情况下,Rails 无法正确复数/单数化某些模型。因此,它无法从关联中获取类名。
指定关联以及类名。
has_many :tickets, class_name: Ticket, dependent: :destroy
在协会的另一边belongs_to
做类似的事情。
正如另一个答案中所建议的,您必须有一个 Ticket
模型。如果它正确存在,那么在这种情况下您不应该设置class_name
。
【讨论】:
我有 Ticket model=> 'class Ticket 【参考方案3】:您是否定义了票证模型?如果模型 Ticket 不存在,这是您会得到的错误。也许你给它起了不同的名字。请记住the class name is inferred from the name of the association。
【讨论】:
class Ticket 这是我的票证模型......无论如何,它通过在神经建议的关联中给出类名来工作。谢谢你:)以上是关于错误 - 未初始化的常量 Project::Ticket的主要内容,如果未能解决你的问题,请参考以下文章
当我需要“fakefs”时出现未初始化的常量 File::NOCTTY 错误