1

回答:电话model是多余的。应该只有一个,并且此示例中的最后一个是获胜者。我在滥用表单对象 DSL。:/

我有一个 Rails 4.1 表单中的改革表单对象,其结构类似于......

表单对象

class MyForm < Reform::Form
  include Composition

  model :user
  model :user_group

  property :name, on: :user_group
  property :email, on: :user
end

控制器

# ...
@form = MyForm.new(user: User.new, user_group: UserGroup.new)
# ... 

看法

<%= form_for(@form) do |f| %>
<%= f.text_field(:name) %>
<%= f.email_field(:email) %>
<% end %>

呈现的 HTML

<input type="text" name="user_group[name]" id="user_group_name">
<input type="email" name="user_group[email]" id="user_group_email">

我的问题是为什么这些字段似乎忽略了模型映射并将它们呈现为错误的模型名称?我在这里做错了什么?

4

1 回答 1

2

您只能调用 ::model 一次!一旦您使用正确的模型(或任何名称)调用它,渲染会将字段命名为您指定的任何 ::model。改革的重点是隐藏有关您的模型名称的内部信息!

于 2015-01-02T21:16:42.780 回答