要在rails中使用ajax,必须在视图(view)中引用对应的javascript文件,在view文件的< /head>标签中使用<%= javascript_include_tag :defaults %>来引入所有rails自动生成的位于public\script下面的.js文件,也可以使用<%= javascript_include_tag :prototype %>等来引入指定的.js文件,不过为了防止忘记引入,可以把这行代码放到application.rhtml或者某个controller对应的controller_name.rhtml中去。
关于javascript_include_tag的例子
javascript_include_tag "xmlhr" # =>
<script type="text/javascript" src="/javascripts/xmlhr.js"></script>
javascript_include_tag "common.javascript", "/elsewhere/cools" # =>
<script type="text/javascript" src="/javascripts/common.javascript"></script>
<script type="text/javascript" src="/elsewhere/cools.js"></script>
javascript_include_tag :defaults # =>
<script type="text/javascript" src="/javascripts/prototype.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>
...
<script type="text/javascript" src="/javascripts/application.js"></script>
现在,就可以使用ajax了,在需要的地方使用in_place_editor_field,由scaffold生成的show.rhtml是一个非常不错的地方,让我们把show.rhtml中的<%=h @contact.send(column.name) %>替换为<%= in_place_editor_field :class_name, :class_attribute %>,让我们看看in_place_editor_field都做了什么,找到它的源代码:
ruby 代码
- def in_place_editor_field(object, method, tag_options = {}, in_place_editor_options = {})
- tag = ::ActionView::Helpers::InstanceTag.new(object, method, self)
- tag_options = {:tag => "span", :id => "#{object}_#{method}_#{tag.object.id}_in_place_editor", :class => "in_place_editor_field"}.merge!(tag_options)
- in_place_editor_options[:url] = in_place_editor_options[:url] || url_for({ :action => "set_#{object}_#{method}", :id => tag.object.id })
- tag.to_content_tag(tag_options.delete(:tag), tag_options) +
- in_place_editor(tag_options[:id], in_place_editor_options)
- end
当然了,这个代码目前我还看不懂。。。等以后能看懂了再来研究,反正,现在先把它当作是一个具有ajax功能的textbox吧。
为了响应in_form_editor_field的ajax事件,需要在Controller中加入一段代码来自动生成响应时间的action,这段代码如下:
ruby 代码
- Contact.content_columns.each do |column|
- in_place_edit_for :contact, column.name
- end
你可以自由的选择把它放到controller的什么位置(只要不放到其他action内部),这段代码使用in_place_edit_for来自动生成了一系列的action,这个魔术是怎么变的呢?马上解开谜底:
ruby 代码
- def in_place_edit_for(object, attribute, options = {})
- define_method("set_#{object}_#{attribute}") do
- @item = object.to_s.camelize.constantize.find(params[:id])
- @item.update_attribute(attribute, params[:value])
- render :text => @item.send(attribute)
- end
- end
通过代码,可以一目了然了。
到此为止,我们做完了所有的基础工作,让我们总结一下,为了使用ajax来查看修改字段内容,我们需要经过如下几个步骤:
1.在视图中引入<%= javascript_include_tag :default%>
2.在需要的地方使用in_place_editor_field :class_name,:class_method
3.在controller中使用in_palce_editor_for来自动生成一系列方法
只要三步,ajax就是这么简单。
分享到:
相关推荐
Ajax-Rails-4-AJAX-modal-form-render-JS-response-as-table-row.zip,rails 4 ajax模式表单将js响应呈现为表行,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于...
支持JQuery的Edit In Place Rails插件(rakuto),使用简便轻巧,与大家共享。 例子 ======= # 控制器 class BlogController in_place_edit_for :post, :title end # Customize the action that update the ...
rails-angular-postgres-and-bootstrap-second-edition 英文原版
Ajax-Rails-4-AJAX-Form.zip,rails 4 ajax表单示例,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下...
rails-documentation-2-0-2
In this fully revised new edition, you'll master Rails 4 by developing a ticket-tracking application that includes RESTful routing, authentication and authorization, file uploads, email, and more....
rails-documentation-1-2-1.zip
rails-documentation-1-2-0-rc1.chm
Simple Form - 轻松处理Rails表单
npm install --save react-rails-form-helpers 通过供应商使用 您可以从获取最新的UMD版本。 关于 该软件包提供了用于编写针对Rails的表单的组件。 该软件包的主要目的是用于通过命名组件传达表单的目的。 如果您对...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
一本rails的实践的教程,包含一个简单的增删查改实例,结合bootstrap的一个小项目
rails-rail-in 用于查找印度铁路信息,例如火车列表、车站列表、路线、票价、PNR 状态、座位可用性等。 安装 要使用 Bundler 安装,请获取最新的稳定版本: gem 'rails-rail-in' , '~> 1.0.0' 要通过 Rubygems ...
Vue-rails-form-builder Vue.js的定制Rails表单构建器概要<%= vue_form_for User.new do |f| %> <%= f.text_field :name %><% end %> < form ... > ... < input v-model =" user....
redux-form-validators 使用redux-form / 简单验证。 受Rails验证的启发。 | | | 安装 npm install redux-form-validators 注意:为了国际化的目的,此软件包与兼容。 演示版 -> FieldLevelValidationForm.js ...
Component-Based Rails Applications: Large Domains Under Control (Addison-Wesley Professional Ruby Series) By 作者: Stephan Hagemann ISBN-10 书号: 0134774582 ISBN-13 书号: 9780134774589 Edition 版本: ...
Rails form_tag实验室目标使用form_tag构建功能性的Rails表单将路由助手作为参数传递给form_tag 将带有方法的选项散列传递给form_tag 使用text_field_tag和其他表单控件来创建输入构建一个new动作,该动作将呈现一个...
ruby on rails的帮助文档,对学习和使用ror的朋友很有帮助
Rails form_tagRails表格欢迎来到Rails表单的世界,它使用户能够将数据提交到表单字段中。 它可以用于:创建新的数据库记录,建立联系表,集成搜索引擎字段以及需要用户输入的应用程序的几乎所有其他方面。 当涉及到...
Rails form_tag实验室目标使用form_tag构建功能性的Rails表单将路由助手作为参数传递给form_tag将带有方法的选项哈希传递给form_tag使用text_field_tag和其他表单控件来创建输入构建一个new动作,该动作将呈现一个...