Project这个Model的new表单,我们需要在创建Project对象时也创建一些Task对象
我们可以使用fields_for这个标签:
- <!-- new.rhtml -->
- <% form_for :project, :url => projects_path do |f| %>
- <p>
- Name: <%= f.text_field :name %>
- </p>
- <% for task in @project.tasks %>
- <% fields_for "project[task_attributes][]", task do |task_form| %>
- <p>
- Task: <%= task_form.text_field :name %>
- 或者
Task: <%=text_field_tag '
project[task_attributes][] [name]' %>
- </p>
- <% end %>
- <% end %>
- <p><%= submit_tag "Create Project" %></p>
- <% end %>
这里我们使用fields_for来为@project的每个task构建一个伪表单,实际上还是@project最外层同一个表单(最终也可以以用表单提交),不过这样我们就
可以在同一表单里添加额外的Model对象字段,再看一个官方的例子:
- <% form_for :person, @person, :url => { :action => "update" } do |person_form| %>
- First name: <%= person_form.text_field :first_name %>
- Last name: <%= person_form.text_field :last_name %>
-
- <% fields_for :permission, @person.permission do |permission_fields| %>
- Admin? : <%= permission_fields.check_box :admin %>
- <% end %>
- <% end %>
然后我们在Project这个Model里添加task_attributes=方法:
- # models/.projects.rb
- def task_attributes=(task_attributes)
- task_attributes.each do |attributes|
- tasks.build(attributes)
- end
- end
这样,我们的controller里的create方法没有受到任何“污染”:
- # projects_controller.rb
- def new
- @project = Project.new
- 3.times { @project.tasks.build }
- end
-
- def create
- @project = Project.new(params[:project)
- if @project.save
- flash[:notice] = "Successfully created project."
- redirect_to projects_path
- else
- render :action => 'new'
- end
- end
From: http://www.cnblogs.com/orez88/articles/1530286.html
分享到:
相关推荐
RUBY的经典之作,对其在RAILS下开发写得很详细
ruby_on_rails_3_入门教程(中文)
Redmine 搭建 Ruby_Ruby_on_Rails 项目管理系统
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
本书是一部专门为Rails实践而写的经典Ruby著作,由四部分组成,共17章。第一部分讲述Ruby和Rails的编程环境。第二部分和第三部分与Rails紧密联系,着重对Ruby这门语言进行详细介绍;所采用的Rails应用示例,既说明了...
weixin_rails_middleware, 微信集成 ruby weixin_rails_middleware for integration weixin.
ruby_on_rails 开发者实战 源代码上 1-12章 来之不易啊。仅供学习.
Rails确认替换为SweetAlert_Ruby_HTML_下载.zip
Rails 的英文脏话过滤器 这个插件将允许您使用基本替换或字典术语过滤亵渎。
效果展示: https://github.com/zaru/action_cable-ika-game-sample/raw/master/ika2.gif?raw=true
一个从图像生成引导配色方案的 Rails 应用程序
这是一个基于 Ruby on Rails 的应用程序,用于管理来自诸如 openSUSE Travel Support Program、GNOME 的 Conference Travel Subsidy Program 或 KDE eV Travel Cost Reimbursement 计划等自由软件组织的旅行帮助计划...
Windows7_Cygwin_Git_RVM_Ruby1.9.3_Rails3_MongoD B_Nginx_Unicorn_Rspec_Guard_Spork(2-Ruby on Rails3 安装配置
Ruby_on_Rails实践.rar
ruby_on_rails_创建一个博客项目.doc
《Ruby_on_Rails敏捷开发最佳实践》英文版,文字影印版
分2卷压缩,另一卷在我的资源列表 本书从Ruby和Rails的历史讲起,以在Rails...本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。
Ruby on Rails 是无可非议的Ruby 杀手锏应用程序。它提供很多保障将Ruby 从其日文 本土的隐晦中解脱出来。没有其他任何一门编程语言可以以这样一个简单的Web应用程 序框架而自豪,该框架也吸取了大部分该语言开发者...
这个是我从百度文库里找的rails笔记,原文作者用清晰的语言代领初学者怎样快速入门Rails
Ruby_on_Rails_School Ruby学校 Rubyschool.us目录列表(俄语) полезныессылки:-регулировкаскоростивидеонаVimeo(Chrome浏览器中的расширениедля) У...