2014-03-12 33 views
3
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)' 

full trace-

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' activerecord (4.0.1) lib/active_record/associations/collection_association.rb:37:in reader' 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 in render' activesupport (4.0.1) lib/active_support/notifications.rb:161:in instrument' actionpack (4.0.1) lib/action_view/template.rb:141:in render' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:49:in block (2 levels) in render_template' actionpack (4.0.1) lib/action_view/renderer/abstract_renderer.rb:38:in block in instrument' activesupport (4.0.1) lib/active_support/notifications.rb:159:in block 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:in instrument' 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:in block in render_template' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:56:in render_with_layout' actionpack (4.0.1) lib/action_view/renderer/template_renderer.rb:47:in render_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:in render_template' actionpack (4.0.1) lib/action_view/renderer/renderer.rb:23:in render' actionpack (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:in render_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:in render_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:in render' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in block (2 levels) in render' activesupport (4.0.1) lib/active_support/core_ext/benchmark.rb:12:in block 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:in ms' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:41:in block in render' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:84:in cleanup_view_runtime' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:25:in cleanup_view_runtime' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:40:in render' 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:in send_action' actionpack (4.0.1) lib/abstract_controller/base.rb:189:in process_action' actionpack (4.0.1) lib/action_controller/metal/rendering.rb:10:in process_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' actionpack (4.0.1) lib/abstract_controller/callbacks.rb:17:in process_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:in block in process_action' activesupport (4.0.1) lib/active_support/notifications.rb:159:in block 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:in instrument' actionpack (4.0.1) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (4.0.1) lib/action_controller/metal/params_wrapper.rb:245:in process_action' activerecord (4.0.1) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (4.0.1) lib/abstract_controller/base.rb:136:in process' actionpack (4.0.1) lib/abstract_controller/rendering.rb:44:in process' actionpack (4.0.1) lib/action_controller/metal.rb:195:in dispatch' actionpack (4.0.1) lib/action_controller/metal/rack_delegation.rb:13:in dispatch' 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:in call' 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:in call' 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:in each' 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:in call' rack (1.5.2) lib/rack/etag.rb:23:in call' rack (1.5.2) lib/rack/conditionalget.rb:25:in call' rack (1.5.2) lib/rack/head.rb:11:in call' actionpack (4.0.1) lib/action_dispatch/middleware/params_parser.rb:27:in call' actionpack (4.0.1) lib/action_dispatch/middleware/flash.rb:241:in call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.0.1) lib/action_dispatch/middleware/cookies.rb:486:in call' activerecord (4.0.1) lib/active_record/query_cache.rb:36:in call' activerecord (4.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in call' activerecord (4.0.1) lib/active_record/migration.rb:369:in call' actionpack (4.0.1) lib/action_dispatch/middleware/callbacks.rb:29:in block 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:in run_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:in call' actionpack (4.0.1) lib/action_dispatch/middleware/remote_ip.rb:76:in call' actionpack (4.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call' actionpack (4.0.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in call' railties (4.0.1) lib/rails/rack/logger.rb:38:in call_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:in block 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:in tagged' railties (4.0.1) lib/rails/rack/logger.rb:20:in call' actionpack (4.0.1) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:in call' rack (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.0.1) lib/active_support/cache/strategy/local_cache.rb:83:in call' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.0.1) lib/action_dispatch/middleware/static.rb:64:in call' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.0.1) lib/rails/engine.rb:511:in call' railties (4.0.1) lib/rails/application.rb:97:in call' rack (1.5.2) lib/rack/lock.rb:17:in call' rack (1.5.2) lib/rack/content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:in service' C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:138:in service' 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 
+0

你能告诉错误的确切位置并将该行添加到问题中吗? – Nerve

+0

我写道,错误是显示模板的第一行是 - <%@ project.tickets.each do | ticket | %> – dips

+0

你真的可以显示回溯? –

回答

0

有一些模型,哪些Rails无法在您的情况下正确复数/单数化。因此,它无法从关联中获取类名。

指定关联以及类名。

has_many :tickets, class_name: Ticket, dependent: :destroy 

在协会的另一方belongs_to做类似。

正如在另一个答案建议,你必须有一个Ticket模型。如果这是正确的,那么你不应该在这种情况下设置class_name

+0

它起作用了!非常感谢你的神经:) – dips

+0

我有车票模型=> '头等舱机票<的ActiveRecord :: Base的belongs_to的:项目' – dips

0

没关系。以前的答案是不正确的。根据guides你的设置应该工作。

您是否检查过以确保@project = Project.for(current_user).find(params[:project_id])有效?做一个if语句来检查是否存在@project而不是rescue可能会更好。

0

您是否定义了票务模型?如果模型Ticket不存在,这是您会遇到的错误。也许你已经命名了不同的东西。请记住,the class name is inferred from the name of the association

+0

客位机票<的ActiveRecord :: Base的 belongs_to的:项目 belongs_to的:用户 的has_many:资产 accepts_nested_attributes_for:资产 验证:说明,存在:真,长度:{最低:10} 结束 – dips

+0

,这是我的票模型......反正它的工作在哪根神经建议协会给予的类名。谢谢 :) – dips