Ruby on Rails中的replace_html生成TypeError

时间:2011-06-22 22:41:02

标签: javascript ajax ruby-on-rails-3

我遇到的问题与我见过的很多问题类似但不完全相同。只是想把它放在这里,以防任何人对这种特殊情况有任何见解。我有一系列选择框,在选择了最后一个框之后,我想根据上面的内容更新text_field文本。

我的视图中有以下代码(实际上是部分代码):

<%= 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错误:

     

TypeError:表达式的结果   'element.getElementsByTagName'   [undefined]不是函数

其次是:

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

有关此错误原因的任何想法?

1 个答案:

答案 0 :(得分:0)

我现在有这个工作。

经验:

  1. 在控制器中使用render:partial而不是render:update
  2. 使用不显眼的JS向控制器发出get请求
  3. 使用:remote =&gt;表格上的确如此
  4. 在过去12个多小时的工作中,不要寻找解决方案或在晚上进行实验
  5. 上面的列表肯定是“足够的”,但我不确定那里的所有内容是否“必要”,但我将继续使用上面列表中的所有其他动态输入字段我的表格。