我要通过jquery为我的场景添加部分内容我无法使用ajax进行部分渲染,因为它需要控制器的交互,而且我不能使用控制器。
所以我这样做
$('#button_add').click(function(){
$('#content_form_div').append("
<%= j render(:partial=> 'pages/content/call_text_phone',
:locals => @locals.merge!(counter: cookies[:counter] + 1 ),
:formats=>[:html]) %>");
});
它第一次渲染局部但第二次它实际上不渲染部分。
不使用ajax就可以做到这一点。
答案 0 :(得分:0)
要重新渲染屏幕上的任何内容,您需要重新加载它(或在javascript中重新创建它)给我,看起来您嵌入了静态HTML和脚本执行的操作。它呈现静态HTML。
答案 1 :(得分:0)
花了很多时间在我自己的解决方案之后,事情变得疯狂,因为代码混乱和更多的代码行。
对于嵌套表单,我将此作为解决方案,因为它也不需要控制器的交互。
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
还有一件事,我在jquery中添加了getRandomInt以创建唯一的id,这是必要的,以避免重复时间戳,立即创建没有时差的字段。
function add_fields(link, association, content) {
// I changed below line by adding getRandomInt method to assure unique id.
var new_id = new Date().getTime() + getRandomInt(1, 5000);
var regexp = new RegExp("new_" + association, "g")
$(".all_fields").append(content.replace(regexp, new_id));
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}