【发布时间】:2011-02-22 14:45:21
【问题描述】:
我想在我的 Ruby on Rails 3 应用程序中使用 Ajax。问题是我希望 Ajax 链接围绕一个 div 标签。如果可能的话,我宁愿使用 jQuery 而不是原型。我将如何做到这一点?
我想要一个涉及一些 Rails 类型编程的解决方案,例如 link_to。
【问题讨论】:
标签: ruby-on-rails ajax
我想在我的 Ruby on Rails 3 应用程序中使用 Ajax。问题是我希望 Ajax 链接围绕一个 div 标签。如果可能的话,我宁愿使用 jQuery 而不是原型。我将如何做到这一点?
我想要一个涉及一些 Rails 类型编程的解决方案,例如 link_to。
【问题讨论】:
标签: ruby-on-rails ajax
首先将“jquery-rails”gem 添加到您的 Gemfile:
gem 'jquery-rails'
然后运行bundle install 和rails 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 ajaxappcd ajaxapprails g scaffold Comment body:textrake db:createrake db:migrateadd 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。
【讨论】: