作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近充满了问题,但多亏了这个很棒的社区,我学到了很多东西。
我之前得到了多态关联所需的所有帮助,现在我有一个关于使用多态模型处理表单的问题。例如,我有 Phoneable 和 User,所以当我创建表单来注册用户时,我希望能够为用户分配一些电话号码(即:手机、工作、家庭)。
class User < ActiveRecord::Base
has_many :phones, :as => :phoneable
end
class Phone < ActiveRecord::Base
belongs_to :phoneable, :polymorphic => true
end
class CreateUsers < ActiveRecord::Migration
t.column :name, :string
t.references :phoneable, :polymorphic => true
end
class CreatePhones < ActiveRecord::Migration
t.column :area_code, :integer
t.column :number, :integer
t.column :type, :string
t.references :phoneable, :polymorphic => true
end
- form_for :user, :html => {:multipart => true} do |form|
%fieldset
%label{:for => "name"} Name:
= form.text_field :name
##now how do I go about adding a phone number?
##typically I'd do this:
##%label{:for => "phone"} Phone:
##= form.text_field :phone
- user_form.fields_for :phone do |phone| %>
%label{for => "area_code"} Area Code:
= phone.text_field :area_code
%label{for => "number"} Number:
= phone.text_field :number
最佳答案
在我们继续之前,我确实注意到一个问题 - 您不需要 t.references
与 has_many
协会的一侧。所以你不需要它在 create_user
模型。它所做的是创建 phonable_id
和 phoneable_type
列,您只需要在多态模型中使用它。
您正朝着正确的道路前进 fields_for
方法。但是为了让它工作,你需要告诉模型如何处理这些字段。您可以通过 accepts_nested_attributes_for
做到这一点类方法。
class User < ActiveRecord::Base
has_many :phones, :as => :phoneable
accepts_nested_attributes_for :phones
end
fields_for
指向关联的确切名称
- form_for @user do |user_form|
- user_form.fields_for :phones do |phone|
- form_for @user do |user_form|
- user_form.fields_for :phone do |phone|
%>
erb 标签 :)
accepts_nested_attributes_for
:
http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
关于ruby-on-rails - Ruby on Rails 中的多态性和表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327236/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!