Ruby on rails—嵌套表单和一对一关系



我在用户和目标之间有一对一的关系。我想建立一个表单,显示用户的目标。问题是,我的代码只有在用户已经定义了目标时才能工作。当没有目标时,文本字段不呈现。

<%= user_builder.fields_for :goal do |goal_builder| %>
   <%= goal_builder.text_field :goal %>
<% end %>

Rails提供了一种简单的方法来做到这一点吗?

我是这样做的:

class User < ActiveRecord::Base
  has_one :goal
  accepts_nested_attributes_for :goal
  after_initialize do
    self.goal ||= self.build_goal()
  end
end

使用accepts_nested_attributes_for可以很容易地做到这一点。

在视图中,如您所见:

<%= user_builder.fields_for :goal do |goal_builder| %>
  <%= goal_builder.text_field :goal %>
<% end %>

在User模型中:

class User < ActiveRecord::Base
  has_one :goal # or belongs_to, depending on how you set up your tables
  accepts_nested_attributes_for :goal
end

请参阅嵌套属性的文档,以及form_for方法获取更多信息。

相关内容

  • 没有找到相关文章

最新更新