Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Rails中仅呈现js而不呈现html(模板、布局)_Javascript_Ruby On Rails_Render_Erb - Fatal编程技术网

Javascript 如何在Rails中仅呈现js而不呈现html(模板、布局)

Javascript 如何在Rails中仅呈现js而不呈现html(模板、布局),javascript,ruby-on-rails,render,erb,Javascript,Ruby On Rails,Render,Erb,我有控制器消息\u控制器,这个控制器有方法消息在这个方法中我想呈现.js.erb文件我需要从rails控制器调用js函数。我需要在没有html模板的情况下重新排序它只需要js代码在这个代码中我将用参数调用js函数。怎么做 我的路线: post 'chat_bot/message', to: 'chat_bot#message' 我的控制器: class ChatBotController < ApplicationController layout false de

我有控制器消息\u控制器,这个控制器有方法消息在这个方法中我想呈现.js.erb文件我需要从rails控制器调用js函数。我需要在没有html模板的情况下重新排序它只需要js代码在这个代码中我将用参数调用js函数。怎么做

我的路线:

 post 'chat_bot/message', to: 'chat_bot#message'
我的控制器:

class ChatBotController < ApplicationController
     layout false

    def message
         #gon.watch.message = params[:text]
        @message = params[:text]
            puts @message
        render partial: 'message.js.erb', layout: false
    end


end
my message.js.erb文件

alert('<%=@message %>');

只需用

def message
  @message = params[:text]
  respond_to do |format|
     format.js
  end
end

Rails将在响应该控制器的文件夹中查找名为_message.js.erb的部分

您可以使用respond_to,然后指定格式和渲染内容:

def message
  respond_to do |format|
    format.html { render partial: 'message.js.erb' }
  end
end
如果愿意,您可以跳过实例变量赋值,因为您可以访问请求中的参数

如果您的想法是评估警报,那么它仍应位于脚本标记内:

<script>
  alert("<%= params[:text] %>");
</script>

你好,谢谢。它起作用了。但当我使用render时,请打开新页面/聊天机器人/消息。如何在不打开新页面的情况下从控制器调用函数?您可以发出JSON请求。如何在不打开新页面的情况下从控制器调用函数?使用dataType:script进行ajax调用
<script>
  alert("<%= params[:text] %>");
</script>