1

我有一个Subscription嵌套到模型的User模型。

我正在尝试创建一个表单来添加新的订阅/subscriptions/new

此表单上显示的字段保存在父User模型中。

在我的new行动中,我只是有

@subscription = Subscription.new

User问题是如何在订阅新 form_for中添加这个父级的字段?订阅表单以某种方式嵌套了父级。

4

1 回答 1

1

如果您将用户和订阅模型中的代码包含到您的答案中,这将非常有帮助,以便我们可以看到关系。根据您的评论,听起来您正在执行以下操作:

class User < ActiveRecord::Base
  has_many :subscriptions
  accepts_nested_attributes_for :subscription 
end

class Subscription < ActiveRecord::Base
  belongs_to :user
end

听起来您想以相同的形式为用户和订阅捕获数据。为此,您必须在嵌套表单上使用 fields_for 嵌套表单(注意accepts_nested_attributes_for上面的。

<%= form_for @user do |user_form|%> 
  <%= user_form.text_field :phone %>
  <%= user_form.fields_for :subscription @user.subscription.new do |subscription_form|%>
    <%= subscription_form.text_field :name %>
  <% end %>
<% end %>

然后,在控制器的 create 方法中,您可以简单地调用:

@user = User.create(params[:user])

此代码未经测试,我对您的设置做了很多假设,但希望这足以让您入门。有关更多信息,fields_for 的文档在这里:http ://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

于 2012-05-17T23:31:22.983 回答