当我尝试加载索引页面时,我一直收到这个错误:
NoMethodError in MessageController#new_message
undefined method `action' for MessageController:Class
如果我用ApplicationController
替换BaseController
,错误就会消失,但这也破坏了许多其他内容和教程(http://websocket-rails.github.io/)对于rails,websocket将其作为CCD_ 3。
class MessageController < WebsocketRails::BaseController
def initialize_session
# perform application setup here
controller_store[:message_count] = 0
end
def new_message
new_message = {:message => 'this is a message'}
send_message :new_message, new_message
end
def index
end
end
有人知道这里出了什么问题吗?
--编辑使用rails版本4.0.2如果这很重要的话
似乎这在过去曾被报告为项目问题跟踪器上的一个问题,但已关闭(未修复)。
解释情况的评论:
您不希望将ApplicationController方法与WebsocketRails:BaseController中的方法混合使用。事实上,WebsocketRails:BaseController是在ApplicationController之后设计的,并实现了一些相同的方法,即process_action。
我使用的解决方案(他们也建议)是使用2个控制器。一个继承自WebsocketRails:BaseController,另一个继承于ActionController::Base(Rails)。把你的逻辑放在一个单独的类中,并从两个类中使用它。