1

我必须通过 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 的情况下执行此操作的任何想法。

4

2 回答 2

0

要重新渲染屏幕上的任何内容,您需要重新加载它(或在 javascript 中重新创建它)给我看,您似乎嵌入了静态 HTML,并且脚本按照它的指示进行操作。它呈现静态 HTML。

于 2013-03-03T09:16:38.100 回答
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;
}
于 2013-03-04T12:49:47.970 回答