我有一个具有多个操作/视图的控制器,其中只有一个将利用ActionController::Live
模块。但是,一旦包含,AJAX操作(在不相关的页面上)就不再在客户端上呈现。
以下代码可以正常运行:
my_controller.rb:
class MyController < ApplicationController
def index
// renders vanilla HTML/JS from index.html.erb
end
def update_index
// renders JavaScript from index.js.erb
end
end
index.html.erb:
<%= button_to({ controller: :my_controller, action: :update_index},
remote: true,
method: 'post') do %>
Update the text
<% end %>
<div id='content'>Some content</div>
update_index.js.erb:
$('#content').html('You clicked the button.');
问题:
一旦我将include ActionController::Live
添加到控制器,甚至在为服务器端事件创建任何JavaScript或Rails句柄(其工作得很好)之前,我的现有代码就会停止工作。发生以下情况:
答案 0 :(得分:1)
如果您在控制器中包含ActionController::Live
,则似乎会更改返回客户端时的默认标题情况。在我的非SSE操作中添加以下行似乎可以解决问题:
response.headers["Content-Type"] = 'text/javascript'
但是我很乐意听到是否有更好的解决方案,或者我是否应该在所有适当的行动中这样做。