【发布时间】:2015-08-29 23:58:28
【问题描述】:
我对 Rails 很陌生,所以这可能是一个明显的问题,如果是这样,我深表歉意。
我正在尝试创建一个用于创建User 记录的表单,该记录具有与Team 模型的belongs_to 关联。到目前为止我所做的是以下...
<% form_for @user, url: {action: "create"} do |f| %>
<%= f.text_field :name %>
<%= f.text_field :email %>
<% f.fields_for :team do |team| %>
<%= team.collection_select(:team_id, Team.all, :id, :name) %>
<% end %>
<%= f.submit %>
<% end %>
这似乎工作得很好,但是在创建用户记录时我遇到了麻烦。
def create
@team = Team.find(params[:user][:team][:team_id])
@team.users.create(user_params)
# Ignoring error checking for brevity
end
def user_params
params.require(:user).permit(:name, :email)
end
参数现在包含team_id 的字段,它不是User 模型的属性,因此创建失败。我不确定如何解决这个问题,更不用说这是否是解决这个问题的适当方法。任何建议将不胜感激!
【问题讨论】:
-
如果用户属于一个团队,它应该有一个team_id,因为belongs_to在外键的一边?此外,除非您在哪里使用嵌套属性做某事,否则您不需要 fields_for。
-
对不起,我并不完全了解 belongs_to 关联的实际运作方式,你说得对。谢谢!
标签: ruby-on-rails forms belongs-to