如何在 Rails 中只渲染没有 html(模板、布局)的 js

How to render only js without html (template, layout) in Rails

我有控制器 Message_Controller 并且这个控制器有方法 "message" 在这个方法中我想渲染 .js.erb 文件我需要从 rails [=25 调用 js 函数=] 需要在没有 html-template(layout) 的情况下重新生成它,仅此代码中的 js 代码我将使用 args 调用 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

我的留言。js.erb文件

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

只需更新为

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

render partial: 'message.js.erb', layout: false

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

您可以使用 respond_to 并指定格式和要呈现的内容:

def message
  respond_to do |format|
    format.html { render partial: 'message.js.erb' }
  end
end

如果您愿意,可以跳过实例变量分配,因为您可以访问请求中的参数。

如果您的想法是 "evaluate" 警报,那么它仍然应该在脚本标记内:

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