1

我在我的视图中有observe_form: <%= observe_form 'new_lead', :url => { :action => 'update_price' }, :frequency => 0.1 %> ,_update_price.rjs 部分和控制器中的这个方法:



      def update_price
        unless request.xhr?
          redirect_to :controller => 'index'
        else
          set_price_group

          render :partial => "update_price", 
                 :locals  => { :services => params[:service], 
                               :spectr   => params[:spectr]   }
        end
      end

我正在将 rails_2 应用程序升级到 rails_3。在 rails_2 上没有错误,但是当我将项目升级到 rails3 时,prototype.js 的 3484 行出现 javascript 错误:“$(...).getElementsByTagName is not a function”。



       getElements: function(form) {
        return $A($(form).getElementsByTagName('*')).inject([],
        function(elements, child) {
          if (Form.Element.Serializers[child.tagName.toLowerCase()])
            elements.push(Element.extend(child));
          return elements;
        }
       );}, 

并且“update_price”不会定期调用。我不知道这是与 Rails 升级有关的问题还是只是 JS 的问题 :( 我该如何解决这个问题?

4

2 回答 2

0

Rails 3.1 使用 jQuery 而不是 Prototypejs。您可以使用https://github.com/rails/prototype-rails之类的东西来取回原型功能

相关如何在 Rails 3.1 中将 jquery 交换为原型

于 2013-03-28T15:37:13.513 回答
0

比如果有人有错误:



    TypeError: document.on is not a function

将prototype.js 1.6.x 更改为1.7 将解决它;)

于 2013-03-28T22:43:50.377 回答