2011-06-22 92 views
0

我遇到类似问题,但不像我见过的很多。只是想把这个放在这里,以防有人对这种特殊情况有所了解。我有一系列选择框,在选择了最后一个选框之后,我想根据上面的内容更新一些文本字段。Ruby on Rails中的replace_html生成TypeError

我有我的观点(在部分实际上)的选择框下面的代码:

<%= f.collection_select :xyz_id, @xyzs, :id, :display_name, 
         { :prompt => "Select a XYZ..." }, 
         { :onchange => "#{remote_function(:url => {:action => "update_text_field"}, 
                  :with => "'abc_id='+$('#foo_abc_id').val()")}", 
          :class => "blah" } %> 

控制器中update_text_field方法做其工作,并呼吁replace_html像这样:

some_info = foo.bar.first(:order => "id DESC").name 

render :update do |page| 
    page.replace_html 'myDivId', :partial => "shared/my_partial", :locals => { :some_info => some_info } 
end 

最后,my_partial看起来是这样的:

<%= text_field_tag :special_info, some_info, :size => 20, :readonly => "readonly" %> 

包含此部分的部分具有这样的:

<div id="myDivId"><%= render :partial => 'shared/my_partial', 
      :locals => { :some_info => some_info } %></div> 

运行时,一切运作良好,直到它抛出一个RJS错误replace_html

RJS error:

TypeError: Result of expression 'element.getElementsByTagName' [undefined] is not a function

其次:

Element.update("myDivId", 
"<input id=\"special_info\" 
name=\"special_info\" 
readonly=\"readonly\" size=\"20\" 
type=\"text\" value=\"The right text\" 
/>"); 

任何关于这个错误原因的想法?

回答

0

我现在有这个工作。

教训:

  1. 使用渲染:代替部分渲染:在控制器
  2. 使用不引人注目的JS更新发出GET请求控制器
  3. 用途:在表格上远程=>真
  4. 别看在晚上的解决方案或实验,当你已经工作了近12+小时

的一个bove列表肯定似乎是“足够”的,但我不确定是否所有内容都是“必要的”,但我将继续使用上述列表来处理表单上的所有其他动态输入字段。