2012-03-09 30 views
5

Tôi có mã này trong tôi tập tin "index.html.erb" trong dự án của tôi:Tại sao tôi nhận được một phương thức undefined `join 'cho nil: NilClass error?

<h1>Listing businesses</h1> 

<table> 
<tr> 
    <th>Index</th> 
    <th>Name</th> 
    <th>Phone Number</th> 
    <th>Suite</th> 
    <th>Address</th> 
    <th>City</th> 
<th>Province</th> 
<th>Postal Code</th> 
<th>Fax</th> 
    <th>Latitude</th> 
    <th>Longitude</th> 
    <th>Website</th> 
    </tr> 

<% count = 0 %> 
<% @businesses.each do |business| %> 
<!--<%=business.inspect %> <br> <br>--> 
<%count = count.to_i + 1 %> 
<tr> 
    <td><%= count %></td> 
    <td><%= business.name %></td> 
    <td><%= business.phone %></td> 
    <td><%= business.suite %></td> 
    <td><%= business.address %></td> 
    <td><%= business.city %></td> 
    <td><%= business.province %></td> 
    <td><%= business.phone %></td> 
    <td><%= business.postalcode %></td> 
    <td><%= business.fax %></td> 
    <td><%= business.latitude %></td> 
    <td><%= business.longitude %></td> 
    <td><%= business.website %></td> 
    <td><%= link_to 'Show', business %></td> 
    <td><%= link_to 'Edit', edit_business_path(business) %></td> 
    <td><%= link_to 'Destroy', user, confirm: 'Are you sure?', method: :delete %></td> 
</tr> 
<% end %> 
</table> 

Khi tôi đi đến url này:

http://localhost:3000/businesses/ 

Tôi nhận được lỗi này:

NoMethodError in Businesses#index 

Showing /Users/AM/Documents/RailsWS/cmdLineWS/Directory/app/views/businesses/index.html.erb where line #37 raised: 

undefined method `join' for nil:NilClass 
Extracted source (around line #37): 

34:  <td><%= business.latitude %></td> 
35:  <td><%= business.longitude %></td> 
36:  <td><%= business.website %></td> 
37:  <td><%= link_to 'Show', business %></td> 
38:  <td><%= link_to 'Edit', edit_business_path(business) %></td> 
39:  <td><%= link_to 'Destroy', user, confirm: 'Are you sure?', method: :delete %></td> 
40: </tr> 
Rails.root: /Users/AM/Documents/RailsWS/cmdLineWS/Directory 

Bất kỳ ý tưởng nào đang diễn ra?

Dưới đây là tiếng gọi đầy đủ stack:

activemodel (3.2.1) lib/active_model/conversion.rb:52:in `to_param' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:417:in `block in <class:Generator>' 
journey (1.0.3) lib/journey/formatter.rb:31:in `call' 
journey (1.0.3) lib/journey/formatter.rb:31:in `block (2 levels) in generate' 
journey (1.0.3) lib/journey/formatter.rb:30:in `each' 
journey (1.0.3) lib/journey/formatter.rb:30:in `block in generate' 
journey (1.0.3) lib/journey/formatter.rb:58:in `match_route' 
journey (1.0.3) lib/journey/formatter.rb:16:in `generate' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:510:in `generate' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:551:in `generate' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:576:in `url_for' 
actionpack (3.2.1) lib/action_dispatch/routing/url_for.rb:148:in `url_for' 
actionpack (3.2.1) lib/action_view/helpers/url_helper.rb:107:in `url_for' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:202:in `business_path' 
app/views/businesses/index.html.erb:37:in `block in _app_views_businesses_index_html_erb___1138300221443858101_2152537040' 
app/views/businesses/index.html.erb:20:in `each' 
app/views/businesses/index.html.erb:20:in `_app_views_businesses_index_html_erb___1138300221443858101_2152537040' 
actionpack (3.2.1) lib/action_view/template.rb:143:in `block in render' 
activesupport (3.2.1) lib/active_support/notifications.rb:125:in `instrument' 
actionpack (3.2.1) lib/action_view/template.rb:141:in `render' 
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:41:in `block (2 levels) in render_template' 
actionpack (3.2.1) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' 
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.1) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' 
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:40:in `block in render_template' 
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:48:in `render_with_layout' 
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:39:in `render_template' 
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:12:in `render' 
actionpack (3.2.1) lib/action_view/renderer/renderer.rb:36:in `render_template' 
actionpack (3.2.1) lib/action_view/renderer/renderer.rb:17:in `render' 
actionpack (3.2.1) lib/abstract_controller/rendering.rb:109:in `_render_template' 
actionpack (3.2.1) lib/action_controller/metal/streaming.rb:225:in `_render_template' 
actionpack (3.2.1) lib/abstract_controller/rendering.rb:103:in `render_to_body' 
actionpack (3.2.1) lib/action_controller/metal/renderers.rb:28:in `render_to_body' 
actionpack (3.2.1) lib/action_controller/metal/compatibility.rb:50:in `render_to_body' 
actionpack (3.2.1) lib/abstract_controller/rendering.rb:88:in `render' 
actionpack (3.2.1) lib/action_controller/metal/rendering.rb:16:in `render' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render' 
activesupport (3.2.1) lib/active_support/core_ext/benchmark.rb:5:in `block in ms' 
/Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in `realtime' 
activesupport (3.2.1) lib/active_support/core_ext/benchmark.rb:5:in `ms' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:40:in `block in render' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:83:in `cleanup_view_runtime' 
activerecord (3.2.1) lib/active_record/railties/controller_runtime.rb:24:in `cleanup_view_runtime' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:39:in `render' 
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:10:in `default_render' 
actionpack (3.2.1) lib/action_controller/metal/mime_responds.rb:268:in `block in retrieve_response_from_mimes' 
actionpack (3.2.1) lib/action_controller/metal/mime_responds.rb:195:in `call' 
actionpack (3.2.1) lib/action_controller/metal/mime_responds.rb:195:in `respond_to' 
app/controllers/businesses_controller.rb:5:in `index' 
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (3.2.1) lib/abstract_controller/base.rb:167:in `process_action' 
actionpack (3.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (3.2.1) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (3.2.1) lib/active_support/callbacks.rb:414:in `_run__4378774651029744650__process_action__1974792849221574797__callbacks' 
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' 
activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.1) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (3.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' 
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:29:in `process_action' 
actionpack (3.2.1) lib/action_controller/metal/params_wrapper.rb:205:in `process_action' 
activerecord (3.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (3.2.1) lib/abstract_controller/base.rb:121:in `process' 
actionpack (3.2.1) lib/abstract_controller/rendering.rb:45:in `process' 
actionpack (3.2.1) lib/action_controller/metal.rb:203:in `dispatch' 
actionpack (3.2.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' 
actionpack (3.2.1) lib/action_controller/metal.rb:246:in `block in action' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `call' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `dispatch' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:30:in `call' 
journey (1.0.3) lib/journey/router.rb:68:in `block in call' 
journey (1.0.3) lib/journey/router.rb:56:in `each' 
journey (1.0.3) lib/journey/router.rb:56:in `call' 
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:589:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' 
rack (1.4.1) lib/rack/etag.rb:23:in `call' 
rack (1.4.1) lib/rack/conditionalget.rb:25:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call' 
rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context' 
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call' 
activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call' 
activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' 
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__539745845193235082__call__2953064504705011211__callbacks' 
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' 
activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app' 
railties (3.2.1) lib/rails/rack/logger.rb:16:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
rack (1.4.1) lib/rack/lock.rb:15:in `call' 
actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call' 
railties (3.2.1) lib/rails/engine.rb:479:in `call' 
railties (3.2.1) lib/rails/application.rb:220:in `call' 
rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call' 
rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
/Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
/Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
/Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

Model cho các ứng dụng được tập tin gọi là business.rb nó chứa này:

class Business < ActiveRecord::Base 
    establish_connection "Listings_development" 
end 
+1

Đỗ bạn ghi đè 'to_key' trong mô hình của bạn? 'Business.to_key' trả về cái gì? –

+2

Thật tuyệt nếu bạn có thể đăng mã Mô hình cho 'Kinh doanh' :) – summea

+0

@summea mã mô hình của doanh nghiệp đã được thêm vào bài đăng – banditKing

Trả lời

4

Từ bảng của bạn dường như không có một khóa chính , đọc số Rails Migrations Guide và viết một để thêm cột id vào bảng của bạn.

def change 
    add_column :business, :id, :primary_key 
end 

Như đã trình bày in the documentation of the to_param method, nó sẽ trả nil nếu đối tượng của bạn vẫn chưa được kiên trì.

Điều này là do một liên kết đến một đối tượng không có trong cơ sở dữ liệu thực sự là một liên kết bị hỏng. Hãy chắc chắn rằng đối tượng của bạn đang được lưu trước khi cố gắng liên kết với nó.


<td><%= link_to 'Show', business %></td> 

Đó là khả năng là vấn đề. You must link to an URL, không phải mẫu. Sử dụng một helper để có được một trong những đề cập đến đối tượng:

<td><%= link_to 'Show', business_path(business) %></td> 

Vấn đề tương tự cũng sẽ xảy ra ở đây, tôi cho rằng:

<td><%= link_to 'Destroy', user, ... %></td> 

Bạn nên thay thế dòng đó với:

<td><%= link_to 'Destroy', destroy_user_path(user), ... %></td> 
+0

Không có vấn đề nào có vẻ là vấn đề – banditKing

+0

@banditKing, bạn có thể gửi toàn bộ ngăn xếp cuộc gọi không? –

+0

@banditKing: vui lòng không chỉnh sửa câu trả lời của người khác để thêm ngăn xếp cuộc gọi. Vui lòng chỉnh sửa câu hỏi của bạn và thêm câu hỏi đó vào đó. –

Các vấn đề liên quan