GO 按钮什么都不做 (AIML rails 5)

GO button does nothing (AIML rails 5)

我已经安装了程序。我遵循了本网站的教程 http://dreamingechoes.github.io/bot/ruby/rails/conversational-bot-ruby-on-rails/

bot.rb

require 'programr'

brains = Dir.glob("lib/bot/*")

BOT = ProgramR::Facade.new
BOT.learn(brains)

application_controller.rb

def ask_bot
  reaction = BOT.get_reaction(params[:query])
  render json: { response: reaction.present? ? reaction : "I don't have an answer to that"  }
end

bot.aiml

<?xml version="1.0" encoding="UTF-8"?>

 <aiml version="1.0" xmlns="http://alicebot.org/2001/AIML-1.0.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://alicebot.org/2001/AIML-1.0.1 http://aitools.org/aiml/schema/AIML.xsd">

<category>
  <pattern>Hello *</pattern>
  <template>
    Hey, how can I help you?
  </template>
</category>

<category>
  <pattern>*bye</pattern>
  <template>
    Always here for you!
  </template>
</category>

<category>
  <pattern>What payment methods do you accept?</pattern>
  <template>
    We accept Visa, MasterCard and American Express.
  </template>
</category>

</aiml>

查看:

<div class="alert alert-info">
  <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
    <strong>Info!</strong> Type something on the text input and hit the <strong>GO</strong> button to get a response.
</div>

<div class="bs-callout bs-callout-info bot-response hide" id="callout-alerts-no-default">
 <h4>Bot says:</h4>
 <p id="bot-response"> </p>
</div>

<div class="row home-row">
  <div class="col-lg-12">
    <div class="input-group">
      <input id="query" type="text" class="form-control" placeholder="Say something to the bot...">
     <span class="input-group-btn">
      <button id="ask" class="btn btn-default" type="button">GO</button>
     </span>
   </div>
 </div>
</div>

application.js

$(document).ready(function(){

  $('#ask').on('click', function(event) {
    $.ajax({
    url: '/ask_bot',
    type: 'json',
    method: 'get',
    data: { query: $('#query').val() },
    success: function(data) {
    $('.bot-response').removeClass('hide');
    $('#bot-response').html(data['response']);
    $('#query').val('');
   }
  });
 });

});

如果我复制一个模式并粘贴到表格中,GO 按钮没有任何作用。请帮忙...谢谢!

很可能你必须使用 DOMContentLoaded 来检查 DOM 何时完成加载,这样你就可以包装 #ask 的监听​​器按钮和 AJAX 函数,无需修改 application.js 文件中的 "requires",也不必将它们作为脚本标记包含在视图中。

你可以试试这样的东西:

document.addEventListener('DOMContentLoaded', function () {
  ...
});

并在里面放置你的 JS 代码,它将保持为:

document.addEventListener('DOMContentLoaded', function () {
  $('#ask').on('click', function(event) {
    $.ajax({
      url: '/ask_bot',
      type: 'json',
      method: 'get',
      data: { query: $('#query').val() },
      success: function(data) {
        $('.bot-response').removeClass('hide');
        $('#bot-response').html(data['response']);
        $('#query').val('');
      }
    });
  });

  $('[data-toggle="tooltip"]').tooltip();
});

您还可以为正在使用的特定控制器和操作添加特定的 custom.js,这就是 Uncaught TypeError: Cannot read property 'getContext' of null 错误的原因,因为这些元素 barChartbarChart2back_office#index.