gpt4 book ai didi

ruby-on-rails - 带有belongs_to 关联的Rails 表单

转载 作者:行者123 更新时间:2023-12-04 07:36:54 24 4
gpt4 key购买 nike

我对 Rails 很陌生,所以这可能是一个明显的问题,如果是这样,我深表歉意。

我正在尝试创建一个表单来创建 User记录,其中有 belongs_toTeam 的关联模型。到目前为止我所做的是以下...

<% 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 的属性模型,因此创建失败。我不确定如何解决这个问题,更不用说这是否是解决这个问题的合适方法。任何建议将不胜感激!

最佳答案

欢迎使用 Rails :)

如果目标是确保每个用户都可以成为团队的一部分,那么以这种方式处理关联的逻辑是没有问题的。

所以首先你需要确保 team_id存在于用户模型上。其次,正如 Doon 所建议的,您不需要 fields_for除非您想与团队模型交互并从同一表单中进行更改。

所以首先创建一个迁移rails g migration add_team_to_user team:belongs_to
在您的迁移中使用belongs_to 将添加一个引用,您可以在此处了解:http://edgeguides.rubyonrails.org/active_record_migrations.html

然后迁移你的数据库bundle exec rake db:migrate
并重新启动您的服务器。然后像这样改变你的表格:

<% form_for @user, url: {action: "create"} do |f| %>
<%= f.text_field :name %>
<%= f.text_field :email %>
<%= f.collection_select(:team_id, Team.all, :id, :name) %>

<%= f.submit %>
<% end %>

关于ruby-on-rails - 带有belongs_to 关联的Rails 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com