1 form_for方法是ActionView::Helpers::FormHelper模块内的方法,所以可以在ActionView的实例中直接调用

2 from_for方法的原型为form_for(record, options = {}, &block),其中record可以是字符串和符号,这时,参数通过params[string/:symbol][:field]传递;record也可以是示例对象,这时参数通过params[instance.class.lowercase][:field]传递,hash中的key与实例的类型名有关,而与instance本身的变量名字无关。

3 当record在routes.rb中定义为resources时,可以不定义url参数,默认情况下,rails会根据record是否为新创建实例来自动安排url,其实根据的是ActiveRecord::Persistence.new_record?()的结果是否为true来判断。

<%= form_for @post do |f| %>
...
<% end %>
生成
<%= form_for @post, as: :post, url: post_path(@post), method: :patch, html: { class: "edit_post", id: "edit_post_45" } do |f| %>
ActiveRecord::Persistence.new_record?()==false的情况:
<%= form_for(Post.new) do |f| %>
...
<% end %>

生成
<%= form_for @post, as: :post, url: posts_path, html: { class: "new_post", id: "new_post" } do |f| %>
  ...
<% end %> 4
url_for会使用ActiveModel::Model.persisted?()来判断实例是否是新建的,还会使用ActiveRecord::Integration.to_param方法,默认返回的是id,用来生成url。

最新文章

  1. k-means聚类算法python实现
  2. 图结构练习——最短路径(floyd算法(弗洛伊德))
  3. iOS - Mac 锁屏快捷键设置
  4. PHP 小方法之 随机生成几位字符串
  5. Jquery 前端模版
  6. ulimit调优
  7. Lotus 迁移到Exchange POC 之安装Exchange 2010!
  8. BZOJ [ZJOI2008]泡泡堂BNB 贪心
  9. C#子线程更新UI控件的方法总结
  10. Thoughtworks的技术雷达
  11. lamp安装指南(转)
  12. abstract修饰符,具体类与抽象类的区别
  13. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable (转)
  14. 快速构建Windows 8风格应用25-数据绑定
  15. JavaScript中null和undefined
  16. Azure Functions + Azure Batch实现MP3音频转码方案
  17. Kubernetes之ServiceAccount
  18. lr_场景设计之知识点-集合点、loadgenerator
  19. C# 广告
  20. MySQL 大数据备份方案之Percona XtraBackup

热门文章

  1. 如何搭建DNS服务
  2. PowerDesigner导出Report通用报表
  3. Oracle内存管理技术
  4. 第三方侧滑菜单SlidingMenu在android studio中的使用
  5. Spinner控件
  6. Latex学习笔记-序
  7. MVC中路由
  8. 在ASP.NET Core中怎么使用HttpContext.Current
  9. Net设计模式实例之桥接模式( Bridge Pattern)
  10. 详解SQLServer 存储过程