ruby-on-rails – 具有多个表继承的嵌套表单
如何在rails中使用多表继承为对象构建嵌套表单?我正在尝试使用具有has_many关系的模型创建一个嵌套表单,以创建另一组具有多表继承的模型.我使用
formtastic和
cocoon作为嵌套表单,使用
act_as_relation gem来实现多表继承.
我有以下型号: class Product < ActiveRecord::Base acts_as_superclass belongs_to :store end class Book < ActiveRecord::Base acts_as :product,:as => :producible end class Pen < ActiveRecord::Base acts_as :product,:as => :producible acts_as :product,:as => :producible end class Store < ActiveRecord::Base has_many :products accepts_nested_attributes_for :products,:allow_destroy => true,:reject_if => :all_blank end' 对于此示例,本书与其他产品进行比较的唯一唯一属性是作者字段.实际上,我有很多独特的书籍属性,这就是为什么我选择多表继承而不是更普通的单表继承. 我正在尝试创建一个嵌套表单,允许您使用产品创建新商店.这是我的表格: <%= semantic_form_for @store do |f| %> <%= f.inputs do %> <%= f.input :name %> <h3>Books/h3> <div id='books'> <%= f.semantic_fields_for :books do |book| %> <%= render 'book_fields',:f => book %> <% end %> <div class='links'> <%= link_to_add_association 'add book',f,:books %> </div> <% end %> <%= f.actions :submit %> <% end %> 而book_fields部分: <div class='nested-fields'> <%= f.inputs do %> <%= f.input :author %> <%= link_to_remove_association "remove book",f %> <% end %> </div> 我收到此错误: undefined method `new_record?' for nil:NilClass 基于阅读act_as_relation的github页面上的问题,我想到了使商店和书籍之间的关系更加明确: class Product < ActiveRecord::Base acts_as_superclass belongs_to :store has_one :book accepts_nested_attributes_for :book,:reject_if => :all_blank end class Book < ActiveRecord::Base belongs_to :store acts_as :product,:as => :producible end class Store < ActiveRecord::Base has_many :products has_many :books,:through => :products accepts_nested_attributes_for :products,:reject_if => :all_blank accepts_nested_attributes_for :books,:reject_if => :all_blank end 现在,我得到一个无声的错误.我可以使用表单创建新的商店,而cocoon允许我添加新的书籍字段,但是当我提交时,商店被创建而不是子书.什么时候,我通过`/ books / new’路线,我可以创建一个跨越(产品和书籍表)的新书记录没有问题. 这个问题有解决方法吗?其余的代码可以在here找到. 解决方法
也许你可以:
>在stores_controller #new动作上手动构建书籍关系 @ store.books.build @ store.books …(对如何实现它并不是很有信心) 让我们发布. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为想学SQLite或练习SQL语言的朋友搭建简单的命令行环境----
- 载波聚合、LTE-Hi浮出水面 抢占LTE-A演进制高点
- ColdFusion:无效的XML控件字符(十六进制)
- Stutio 插件 jimu Mirror实时预览xml
- soap
- Oracle批量导入100万条数据不到1秒
- 违反了 UNIQUE KEY 约束 'UNQ_CusID_DetachPolicyID
- 当从Postgresql 9.1升级到9.3时,linux – “无法写入日志文
- VB鼠标滚轮插件安装错误集锦:模块与正在运行的windows版本
- 《 Swift UITabBarController 的使用和自定义TabBar,和部分