Ruby on rails 3.2 使用Rails 3与PrivatePub一起渲染字符串

Ruby on rails 3.2 使用Rails 3与PrivatePub一起渲染字符串,ruby-on-rails-3.2,Ruby On Rails 3.2,我正在从事Rails 3.2中的一个项目,并使用Ryan Bates的PrivatePub gem(Faye wrapper)。我在将render_to_字符串的结果传递到Publish方法的javascript中时遇到了一个问题。到目前为止,我还没有通过Google、render_to_string文档或Faye文档找到任何运气 在我的控制器中,我有以下功能: def my_action html_text = render_to_string :partial => 'my_par

我正在从事Rails 3.2中的一个项目,并使用Ryan Bates的PrivatePub gem(Faye wrapper)。我在将render_to_字符串的结果传递到Publish方法的javascript中时遇到了一个问题。到目前为止,我还没有通过Google、render_to_string文档或Faye文档找到任何运气

在我的控制器中,我有以下功能:

def my_action
  html_text = render_to_string :partial => 'my_partial', :formats => [:html]
  puts html_text
  PrivatePub.publish_to("/#{my_channel}", "$('#my_id').html('#{html_text}');")
end
这不起作用(订阅页面上的div不更新)。但是,将my_partial中相同内容的字符串指定给html_文本,效果很好(div更新):

def my_动作
html_text=“Testing this”#这是上面唯一的更改
放置html_文本
PrivatePub.publish_to(“/#{my#u channel}”,“$('#my#u id').html('#{html_text}')”)
终止
查看服务器日志,我可以看到在这两种情况下,“puts html_text”输出看起来完全相同

不确定这是否重要,但我的控制器只响应json,我使用curl将测试帖子推送到这个动作

部分原因很简单:

<h3>Testing this</h3>
测试这个
这里我肯定遗漏了一些简单的东西,但我不明白为什么render_to_string会给我一个不同的结果,而仅仅是分配一个string变量

有人有什么想法吗


谢谢

我成功了,但我不知道为什么。以下是我所做的:

根据中的一些讨论,我在代码中添加了以下内容,以便更好地了解正在发生的事情:

    html_text = render_to_string :partial => 'my_partial', :formats => [:html]
    test_text = "<h3>Testing this</h3>"
    puts "****************************************"
    puts html_text
    puts test_text
    puts html_text.bytes.count
    puts test_text.bytes.count
    puts "-" + html_text + "-"
    puts "****************************************"
    PrivatePub.publish_to("/#{my_channel}", "$('#my_id').html('#{html_text}');")
在render_to_字符串调用之后,它突然工作了!现在的问题是要弄清楚到底是什么字节导致了这一点不起作用(因为我不能让它消失!)。有人知道那可能是什么吗

编辑

我找出了问题的原因,所以我会解释一下,以防其他人遇到类似的问题

我扩展了我的局部视图,使其看起来像这样

<h3>Testing this</h3>
One
Two
测试这个
一
二
事情又停止了。这是因为字符串中有
/n
。所以我替换了
html\u text.strip带有
html\u text.gsub!(/\n/,“
”)
现在一切正常。有时候,深入思考会把简单的答案弄糊涂


不确定这是否是最好的铁路方式,但它完成了任务。如果有人知道更好的方法,我很乐意听到

每种情况下的输出是什么?在这两种情况下,服务器日志都会显示测试此项的
-<h3>Testing this</h3>
-
html_text.strip!
<h3>Testing this</h3>
One
Two