首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoMethodError (未定义方法“空?”)(对于#<Event:0x6042e88>):

NoMethodError (未定义方法“空?”)(对于#<Event:0x6042e88>):
EN

Stack Overflow用户
提问于 2016-11-23 09:35:23
回答 1查看 1.6K关注 0票数 5

我使用counseling_eventpostgre数据库创建了rails API,其中有一个模型(表)名为

注意:不使用支架rails-5

我的counseling_event模式(迁移)如下:

代码语言:javascript
复制
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

现在,在我的Controller即CounselingEventController中,在操作索引中,我从counseling_event表中检索数据。代码如下。

代码语言:javascript
复制
def index
  @counseling_event = CounselingEvent.where(start_time: "2016-10-30".."2016-12-11")
  render body: @counseling_event
end

当我从前端到下面的路由调用这个api控制器操作时

代码语言:javascript
复制
get 'counseling_event/index'

我在我的控制台上看到了这个错误:

代码语言:javascript
复制
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'

我不知道错误的原因,但努力解决。有人能帮我解决这个错误吗。这似乎是某种激活模型的错误。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 07:56:29

Rails是基于Rack的。机架只能处理字符串。你呈现的是一个对象,而不是一个字符串。

你可能想要这样的东西:

代码语言:javascript
复制
render plain: @counceling_event.to_s

这基本上是因为Rack试图在响应的主体上调用#empty?,以确定它应该如何响应客户端。

但是,由于您的@counceling_event不是字符串,并且不响应empty?,所以它会失败。

我不知道你想用render body: <SOMETHING>做什么。如果您使用的是Rails应用程序,那么您可能希望呈现一个视图,而不是直接从控制器中呈现内容。

如果您真的想要从控制器呈现,您应该考虑使用render plain: <SOMETHING>

希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40760620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档