我试图使用RJS替换DOM中的div。这是我尝试的代码,控制器具有此方法:
def change render :update do |page| page.replace(:test_id, :partial => "input",:locals =>{ :type => 'text', :name => 'user[user][contactinfo][city]', :val => "", :size => '244', :placeholder_text => 'Yes it is working...'}) end end
该视图包含:
<div id = "test_id"></div> <%= link_to "AJAX", "/poc/change", :remote => true %>
现在,我想div id="test_id"用提到的部分替换。
div id="test_id"
我得到的输出是:
try { Element.replace("test_id", "<input type=\"text\" id=\"user[user][contactinfo][city]\" name=\"user[user][contactinfo][city]\" value=\"\" placeholder=\"Yes it is working...\" style=\"width:244px; height:33px; border:0; color:#646464; background:url(/images/form_textfield_244.png) 0 5px no-repeat; padding:12px 5px 0 5px; margin:0 0 10px 0;\" />\n"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.replace(\"test_id\", \"<input type=\\\"text\\\" id=\\\"user[user][contactinfo][city]\\\" name=\\\"user[user][contactinfo][city]\\\" value=\\\"\\\" placeholder=\\\"Yes it is working...\\\" style=\\\"width:244px; height:33px; border:0; color:#646464; background:url(/images/form_textfield_244.png) 0 5px no-repeat; padding:12px 5px 0 5px; margin:0 0 10px 0;\\\" />\\n\");'); throw e }
这可以在浏览器中看到。谁能解释我要去哪里错了?预期的输出是div应该替换为给定的任何内容。
我建议您不要再使用RJS。更好的方法是使用您希望JavaScript生成的JS视图。
例如,如果您使用jQuery,则可以添加一个文件:
changes.js.erb
在其中添加Javascript:
$('#test_id').html("<%= escape_javascript(render :partial => "input",:locals =>{ :type => 'text', :name => 'user[user][contactinfo][city]', :val => "", :size => '244', :placeholder_text => 'Yes it is working...'}) %>")
现在,如果您调用/proc/change.js,则可以看到生成的JS,就像在页面中执行一些JS一样。