Javascript 如何在Rails中仅呈现js而不呈现html(模板、布局)
我有控制器消息\u控制器,这个控制器有方法消息在这个方法中我想呈现.js.erb文件我需要从rails控制器调用js函数。我需要在没有html模板的情况下重新排序它只需要js代码在这个代码中我将用参数调用js函数。怎么做 我的路线: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
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>