如何在Rails中仅呈现不带html的js(模板,布局)

时间:2019-05-11 13:10:14

标签: javascript ruby-on-rails render erb

我有控制器Message_Controller,并且该控制器具有此方法中的“消息”方法,我想渲染.js.erb文件,我需要从rails控制器调用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

我的message.js.erb文件

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

2 个答案:

答案 0 :(得分:1)

使用

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

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

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

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

答案 1 :(得分:0)

只需用

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