我正在使用ajax更新某些表单字段。
其中一个字段如下
<td id='alarms_id'></td>
在文件update.js.erb中,我有以下内容:
alert('<% concat @alarms %>')
document.getElementById("alarms_id").innerHTML = '<% concat @alarms %>'
在控制器中,如果我执行以下操作(用于测试目的)
@alarms = "Hello World!"
一切都会正常工作,我会看到警告弹出窗口,我看到该字段显示&#34; Hello World!&#34;信息。但在我的实际应用中,我希望所有警报都在不同的行中,所以我尝试了这个:
@alarms = "Hello \n World!"
但是我没有看到警告消息,我的字段没有更新(没有显示Hello World消息)。我尝试过Firefox和Safari,但没有人能为我工作。
任何人都明白我做错了什么,我怎样才能得到&#34; Hello World!&#34;消息显示在2个单独的行中?
答案 0 :(得分:0)
在HTML中,您可以像这样写一个换行符:<br/>
而不是\n
。
答案 1 :(得分:0)
而不是@alarms = "Hello \n World!"
您是否尝试过@alarms = "Hello <br> World!"
?
答案 2 :(得分:0)
在 Ruby on Rails 中,您可以通过多种方式实现:
使用html_safe
标记您的HTML变量:
@alarms = "Hello <br/> World!".html_safe
document.getElementById("alarms_id").innerHTML = 'concat <%= @alarms %>';
或使用html_safe
显示您的HTML变量:
@alarms = "Hello <br/> World!"
document.getElementById("alarms_id").innerHTML = 'concat <%= @alarms.html_safe %>';
或使用raw
显示您的HTML变量:
@alarms = "Hello <br/> World!"
document.getElementById("alarms_id").innerHTML = 'concat <%=raw @alarms %>';
请注意,JavaScript中的alert()
函数不理解HTML代码,因此您无法使用它来按原样显示HTML变量。