将Prototype替换为jquery rails-replacehtml会导致错误



在研究了如何用jQuery替换Prototype之后,我得到了这个jQuery rails:

gem 'jquery-rails', '>= 1.0.3'
rails g jquery:install
rails s

我已经包含了:defaults文件(jquery rails应该替换这些文件),但在实现AJAX登录脚本时会出现错误。创建会话并将用户登录进行得很好,但代码会产生错误:

TypeError:对象函数Element(){[本机代码]}没有方法"update"Element.update("边栏",":partial=>"布局/用户");

控制器:

sign_in user
  respond_to do |format|
    format.js {
      render :update do |page|
        page.replace_html 'sidebar' , ":partial => 'layouts/user'"
      end 
    }

形式:

<nav id="sidebar">
    <%= form_for :session, :url => sessions_path, :remote => true do |f| %>
      <div>
        <%= f.label :email %><br />
        <%= f.text_field :email, :class => "span-4" %>
      </div>
      <div>
        <%= f.label :password %><br />
        <%= f.password_field :password, :class => "span-4" %>
      </div>
      <div>
        <%= f.submit "Sign in" %>
      </div>
    <% end %>
</nav>

如果我没有错的话,jquery rails应该是Prototype的一个替代品。所以我猜我做错了什么?

编辑:
添加侧边栏导航

您必须创建一个名为XXX.js.erb的分部,删除名为XXXjs.jrs的分部(如果有),并在第一个分部的内部使用JQuery(主要是其.html()方法),例如:

=>控制器

respond_to do |format|
  format.js { render :locals => { :foo => 'bar' } }
end

=>js部分(XXX.js.erb)

$('#element')
 .html("<%= "hello #{foo}" %> ");

问题是page.replace_html是一个原型函数。请参阅此问题以供参考。无干扰的Javascript是您的最佳选择。

相关内容

  • 没有找到相关文章

最新更新