我有一个使用Faye的实时应用程序。执行创建操作时,通常我会回复js
并且我有一个包含此文件的create.js.erb
文件:
<% broadcast "/auditors/activity" do %>
$('.audit-activity .card-data .list').append("<%= escape_javascript render('auditors/activity', activity: @activity) %>")
<% end %>
广播方法捕获块中的javascript并处理它:
def broadcast(channel, &block)
message = {channel: channel, data: capture(&block)}
uri = URI.parse(Rails.application.secrets.faye_server["server"])
Net::HTTP.post_form(uri, message: message.to_json)
end
但是,在某些情况下,我无法回复js
。我必须回复html
并执行重定向。因此,我想做这样的事情:
if @contact.save
<% broadcast "/auditors/activity" do %>
$('.audit-activity .card-data .list').append("<%= escape_javascript render('auditors/activity', activity: @activity) %>")
<% end %>
redirect_to contact_path(@contact)
当然,这行javascript不是有效的ruby语法,因此会引发异常。如何在控制器中完成此操作?