2016-11-23 34 views
2

我創建使用postgre數據庫,其中我有一個模型(表)的名稱作爲counseling_eventNoMethodError(未定義的方法`空「的#?<事件:0x6042e88>):

注一個軌道API :不使用支架並使用導軌-5-

我給counseling_event scheman(遷移)被如下:

class CreateCounselingEvent < ActiveRecord::Migration[5.0] 
def change 
create_table :counseling_event do |t| 
    t.text :name 
    t.datetime :start_time 
    t.datetime :end_time 
    t.text :location 
    t.integer :user_id 
    t.integer :role_id 
    t.timestamps 
end 
end 
end 

我在上面的表中添加了一列,它是enum類型。列名是event_type

現在,在我的控制器,即CounselingEventController,在我的行動指數我從counseling_event表中檢索數據。代碼如下。

def index 
    @counseling_event = CounselingEvent.where(start_time: "2016-10-30".."2016-12-11") 
    render body: @counseling_event 
end 

當我打電話從前端這個API控制器行動,通過以下途徑

get 'counseling_event/index' 

我得到這個錯誤在我的控制檯:

CounselingEvent Load (1.5ms) SELECT "counseling_event".* FROM "counseling_event" 

    NoMethodError (undefined method `empty?' for #<CounselingEvent:0x47d1d58>): 

    activemodel (5.0.0.1) lib/active_model/attribute_methods.rb:433:in `method_missing' 
    rack (2.0.1) lib/rack/etag.rb:68:in `block in digest_body' 
    activerecord (5.0.0.1) lib/active_record/relation/delegation.rb:38:in `each' 
    activerecord (5.0.0.1) lib/active_record/relation/delegation.rb:38:in `each' 
    actionpack (5.0.0.1) lib/action_dispatch/http/response.rb:145:in `each_chunk' 
    actionpack (5.0.0.1) lib/action_dispatch/http/response.rb:126:in `each' 
    actionpack (5.0.0.1) lib/action_dispatch/http/response.rb:74:in `each' 
    actionpack (5.0.0.1) lib/action_dispatch/http/response.rb:464:in `each' 
    rack (2.0.1) lib/rack/etag.rb:66:in `digest_body' 
    rack (2.0.1) lib/rack/etag.rb:29:in `call' 
    rack (2.0.1) lib/rack/conditional_get.rb:38:in `call' 
    rack (2.0.1) lib/rack/head.rb:12:in `call' 
    activerecord (5.0.0.1) lib/active_record/migration.rb:552:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call' 
    activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__' 
    activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks' 
    activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call' 
    railties (5.0.0.1) lib/rails/rack/logger.rb:36:in `call_app' 
    railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `block in call' 
    activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `block in tagged' 
    activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in `tagged' 
    activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `tagged' 
    railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/request_id.rb:24:in `call' 
    rack (2.0.1) lib/rack/runtime.rb:22:in `call' 
    activesupport (5.0.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call' 
    actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:in `call' 
    rack (2.0.1) lib/rack/sendfile.rb:111:in `call' 
    rack-cors (0.4.0) lib/rack/cors.rb:80:in `call' 
    railties (5.0.0.1) lib/rails/engine.rb:522:in `call' 
    puma (3.6.0) lib/puma/configuration.rb:225:in `call' 
    puma (3.6.0) lib/puma/server.rb:578:in `handle_request' 
    puma (3.6.0) lib/puma/server.rb:415:in `process_client' 
    puma (3.6.0) lib/puma/server.rb:275:in `block in run' 
    puma (3.6.0) lib/puma/thread_pool.rb:116:in `call' 
    puma (3.6.0) lib/puma/thread_pool.rb:116:in `block in spawn_thread' 

我不知道原因對於錯誤,但是,盡力解決它。任何人都可以幫助我解決這個錯誤。它似乎像一些activemodel錯誤。提前致謝。

+0

即使面臨同樣的問題,我嘗試過不同的設備和環境,但它沒有幫助。 – chinna2580

回答

1

Rails基於Rack。機架只能處理字符串。你正在渲染一個對象,而不是一個字符串。

你可能想是這樣的:

render plain: @counceling_event.to_s 

它基本上是因爲機架試圖調用#empty?在響應的主體,以決定應如何響應客戶端。

但由於您的@counceling_event不是字符串,並且不響應empty?,因此它失敗。我不確定你想要做什麼render body: <SOMETHING>。如果您使用的是Rails應用程序,則可能需要直接從控制器呈現視圖而不是內容。

如果你真的想從控制器渲染,你應該考慮使用render plain: <SOMETHING>

希望這會有所幫助。

+0

您可能正確@Emil更換'render body'後問題解決了。我正在使用'render body'從我的數據庫中精確提取活動記錄。我會鼓勵進一步解釋。謝謝。 –

相關問題