【问题标题】:Ajax on html block in Ruby on Rails 3Ruby on Rails 3 中的 html 块上的 Ajax
【发布时间】:2011-02-22 14:45:21
【问题描述】:

我想在我的 Ruby on Rails 3 应用程序中使用 Ajax。问题是我希望 Ajax 链接围绕一个 div 标签。如果可能的话,我宁愿使用 jQuery 而不是原型。我将如何做到这一点?

我想要一个涉及一些 Rails 类型编程的解决方案,例如 link_to。

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    首先将“jquery-rails”gem 添加到您的 Gemfile:

    gem 'jquery-rails'
    

    然后运行bundle installrails g jquery:install。就这样。现在您可以使用 jQuery。

    在视图中添加一个 div,例如:

    <div id='ajax_div'><%= @article.title %></div>
    

    现在您可以通过这种方式包含一些 javascript:

    $(
      function(){
        $("#ajax_div").click(function(){
          $.ajax(...)
        }
      }
    )
    

    关于 $.ajax 的更多信息:http://api.jquery.com/jQuery.ajax/(您可以使用 $.post 或 $.get 或 $.getScript)

    UPD

    通过link_to使用ajax

    <%= link_to some_path, :remote => true do %>
      <div id='ajax_div'><%= @article.title %></div>
    <% end %>
    

    从头开始

    让我们创建新的 Rails 应用程序。从头开始。展示 ajax 是如何工作的。我不会测试它,所以这里可能会出现错误类型和错误。

    • rails new ajaxapp
    • cd ajaxapp
    • rails g scaffold Comment body:text
    • rake db:create
    • rake db:migrate
    • add gem 'jquery-rails' to Gemfile => 捆绑安装 => rails g jquery:install

    让我们编辑 cmets/index.html.erb:

    <h1>Listing comments</h1>
    
    <%= link_to comments_path, :remote => true, :method => :post do %>
      <div>Click me to add random comment</div>
    <% end -%>
    <div id='comments'>
      <%= render @comments %>
    </div>
    

    _评论部分:

    <p>
      <%= comment.body %>
    </p>
    

    现在我们将添加 app/views/create.js.erb 文件:

    $("#comments").append("<%= escape_javascript( render @comment ) %>")
    

    cmets_controller 创建动作:

    def create
      @comment = Comment.new
      @comment.body = (0...50).map{ ('a'..'z').to_a.<<(" ")[rand(27)] }.join
      @comment.save
    end
    

    就是这样。现在运行rails s。转至localhost:3000/comments

    【讨论】:

    • 我正在寻找更多的 Rails 方法来使用类似 link_to type 命令的方法
    • 实际上 rails 工作是服务器端工作。并且没有工具可以直接在 rails 中处理 ajax 和 DOM
    • 这不起作用,无论如何它会将ajaxed内容加载到哪里?
    • 当然不行。这只是一个例子。你应该创建并设置你的控制器。组织响应等。我将尝试在我的评论中显示所有堆栈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2013-04-17
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多