使用带有Composition的Reform Form Object对字段进行意外命名

时间:2015-01-02 18:22:15

标签: ruby-on-rails ruby-on-rails-4.1 reform

答案: model来电是多余的。应该只有一个,本例中的最后一个是赢家。我在滥用Form Object 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">

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

1 个答案:

答案 0 :(得分:2)

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