Rails accepts_nested_attributes_for表单嵌套的利器

http://blog.csdn.net/kunshan_shenbin/article/details/7249713
http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-fields_for
http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for

还在为表单嵌套而苦恼么,看看accepts_nested_attributes_for方法吧,今天在项目里用过之后,更爱这门语言了.

# eoncoding: UTF-8

class Package
  include Mongoid::Document
  include Mongoid::Timestamps
  include ImageUploadable
  store_in collection: ‘all_apps‘
  field :language, type: String, default: ‘中文‘
  field :url, as: :download_url, type: String //as别名
  field :intro_icons, type: Array, default: []
  field :updated_on, type: Date
  field :is_actived, type: Boolean, default: false
  field :position, type: Integer, default: 0
  field :is_deleted, type: Boolean, default: false

  index code: 1 //索引
  index package: 1

  has_many :recommend_apps, foreign_key: ‘app_id‘
  accepts_nested_attributes_for :recommend_apps
class RecommendApp
  include Mongoid::Document
  include Mongoid::Timestamps
  include ImageUploadable

  validates :app_id, presence: true
  validates :type, inclusion: { in: TYPES.keys  }
  validates :app_id, uniqueness: { scope: :type }

  belongs_to :package, foreign_key: ‘app_id‘
<%= form_for @recommend_app, html: { class: package_form_class(@recommend_app), role: ‘form‘ }  do |f|  %>  

  <div class="form-group">
    <%= f.label :position, "推荐位置", class: "col-sm-2 control-label" %>
    <div class="col-sm-3">
      <%= f.text_field :position,:class =>"form-control" %>
    </div>
  </div>

  <%= fields_for :package do |package| %>

  <div class="form-group">
    <%= package.label :title, "名称", class: "col-sm-2 control-label" %>
    <div class="col-sm-3">
      <%= package.text_field :title ,:class =>"form-control" %>
    </div>
  </div>
 <% end %>

recommend_apps_controller.rb

  def edit
    @package = @recommend_app.package
  end 

  def update
    old_position = @recommend_app.position
    if @recommend_app.update_attributes recommend_app_params
      @package = @recommend_app.package
      if @package.update_attributes package_params
        @recommend_app.adjust_recommend_app_position(@recommend_app.position)
        redirect_to recommend_apps_path, notice: ‘操作成功‘
      end
    else
      render :edit
    end
  end 

fields_for(record_name, record_object = nil, fields_options = {}, &block)

可以看下下面的文档

http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-fields_for

Rails accepts_nested_attributes_for表单嵌套的利器,布布扣,bubuko.com

时间: 2024-10-20 08:36:14

Rails accepts_nested_attributes_for表单嵌套的利器的相关文章

rails 表单嵌套

rails 表单嵌套里面的表单提交的时候会提交外面的表单.rails 默认把里面的表单删除(即你查看html的时候会发现里面的form表单不见了). 如果 form 指定 remote: true . 但是却使用 this.form.submit(); 这个js 来提交表单的话,表单的 remote 不会表现出来,表单被提交.如果使用的 submit 按钮 remote 就会起作用.

关于表单嵌套提交的分析

现在在做一个case,但是遇到了一个表单嵌套提交的问题,以下对相关资料查询罗列如下: 1.方法1: 我用JAVASCRIPT,在FORM里面字段都一样,但是要提交给不同的action的时候, //得到你的from var form = document.forms['yourForm']; //在这里手工指定提交给哪个ACTION form.action = 'updateAction.do'; //执行SUBMIT form.submit(); 你可以把这些代码封装为一个JS方法,在HTML中

form表单嵌套,用标签的form属性来解决表单嵌套的问题

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>标签的form属性</title> </head> <body> <form action="demo-form.php" id="form1"> First name: <input type="text

selenium——表单嵌套

<html> <iframe id="id-iframe" name="iframee1"> --切换表单 <html> <input> </html> </iframe> </html> 定位元素定位不到的话,要检查看是否被嵌套在表单里面了 或者是元素不可见 使用完嵌套表单后,要跳出当前表单 原文地址:https://www.cnblogs.com/nnniki/p/9710507

easyui不提交window中的form表单数据

<form id="ff" method="post">, <div id="win" class="easyui-window" title="系统登录" style="width: 345px; height: 180px; padding: 10px" data-options="modal:true,collapsible:false,minimiza

selenium 窗口切换(多表单切换)

在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver  只能在同一页面识别定位元素,可以狭隘的理解成只能识别当前所在位置的页面上的元素.对于不同的iframe/frame表单中的元素是无法直接定位的.需要结合switchTo().frame()方法切换到指定的frame/iframe中.switchTo().frame()默认的是取表单的ID和name属性.如果没有id和name

精通CSS+DIV网页样式与布局--设置表单和表格

表格和表单是网页中非常重要的两个元素,在上篇博客中,我们简单的介绍了CSS的页面背景设置,今天小编继续来介绍CSS的相关知识,在我们的CSS中如何设置表格和表单,首先,来看一张思维导图,通过图简单的预览一下该博文主要讲解哪些CSS的基础知识: 首先我们的首先表格中的标记,代码和运行效果如下所示: <span style="font-size:18px;"><html> <head> <title>年度收入</title> &l

Struts学习(五)-表单标签,一个实例练习

表单标签将在 HTML 文档里被呈现为一个表单元素 使用表单标签的优点: 表单回显 对页面进行布局和排版 标签的属性可以被赋值为一个静态的值或一个 OGNL 表达式. 如果在赋值时使用了一个 OGNL 表达式并把它用 %{} 括起来, 这个表达式将会被求值. 表单标签的共同属性 * 该属性只在没有使用 simple 主题时才可以使用. form标签 默认情况下, form 标签将被呈现为一个表格形式的 HTML 表单. 嵌套在 form 标签里的输入字段将被呈现为一个表格行. 每个表格行由两个字

学习Selenium元素定位--多表单切换

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这时就需要通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中. #!/usr/bin/env/ python # coding:utf-8 # Date:2019/1/10 from selenium import webdriver import time #打