zoukankan      html  css  js  c++  java
  • rails中的form_for

    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。
  • 相关阅读:
    vue打包不显示或图片不显示配置
    Vue::is特性用法
    毕业实习报告
    前端vscode常用快捷键总结
    1. 变量常量
    信息收集之CMS指纹识别
    4. EIGRP的复合度量值
    3. EIGRP报文,三张表,邻居建立
    信息收集之目录扫描
    2. EIGRP路由单播邻居和被动接口
  • 原文地址:https://www.cnblogs.com/highsky/p/5794153.html
Copyright © 2011-2022 走看看