我有一个用户,而且用has_and_belongs_to_many
关系链接的项目模型(每个用户可以是几个项目的一部分,他们可以是几种创建者项目)。我想创建一个表单来将用户添加到项目中。用户需要输入另一个用户的用户名来添加他。我怎样才能做到这一点?Rails的:如何创建一个表单来创建一个新的has_many关系
这里是我试过:
<%= form_for(@project) do |f| %>
<%= f.label :username, "Username" %>
<%= f.text_field :users %>
<%= f.submit "Add" %>
<% end %>
然后在控制器中我会做这样的事情:
def add_user
@project = Project.find(params[:id])
user = User.find_by(username: params[:username])
user.projects << @project
user.save
redirect_to @project
end
的问题是,用户的文本字段不会做我认为它会输出@project.users
检查(#<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_User:0x007fc3e98e8d70>
)。
我已经看到了嵌套形式,但我不认为作为用户和项目已创建它的合适。我使用的铁轨4
看不清,它正在做什么,它不是你以为会是什么。 PS除非你对用户名有唯一性限制,否则你是通过不选择用户来要求它的。也给你的问题,我会期望两个用户。要添加的用户和'授权' –
@TonyHopkinson我已编辑'用户'字段的问题。是的,用户名有一个唯一性约束,并且场景中有两个用户。作为项目一部分的用户通过输入他的用户名添加另一个。 – romainberger
你想要的text_field是什么:用户要做什么?显示用户列表,或只是一个文本字段,他们可以输入名称?认为你真正的问题是在显示表单的控制器中。 –