Rails3入门锦集(7) 构建多模型表单 视图帮助器
入门锦集1-8都来自官方的翻译:http://edgeguides.rubyonrails.org/getting_started.html
?
?
1. 构建多模型表单
现在的博客一般都有便签功能, 方便读者通过关键字索引文章. 要实现该特性你的应用需要在一个表单中交互多个模型. 那么这时候Rails提供了另一个重要的功能: 嵌套表单
?
为了展示, 我们将为post的多标签提供支持. 首先, 我们需要为标签创建模型:
?
$ rails g model tag name:string post:references
?
然后:
?
$ rake db:migrate
?
接下来, 编辑post.rb建立另一半关联, 并告诉rails你需要通过posts来编辑tags:
?
?
?现在你可以直接在创建或编辑post页面中添加或删除tags了.
?
不过?@post.tags.map { |t| t.name }.join(", ") 感觉不是那么友好, 我们可以通过帮助器来改变.
?
?
2. 视图帮助器
视图帮助器位于 app/helpers, 可以提供一些可重用的视图代码片段. 在这里, 我们需要把所有tags的名称连起来并用逗号隔开, 由于它位于Posts视图, 那么我们可以在 PostsHelper 中实现:
module PostsHelper def join_tags(post) post.tags.map { |t| t.name }.join(", ") endend
?
?然后把上面的?<%= @post.tags.map { |t| t.name }.join(", ") %> 改为:
<%= join_tags @post %>
?
?
?
转自:?http://onia.iteye.com/blog/833152