我有一個用戶,而且用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是什麼:用戶要做什麼?顯示用戶列表,或只是一個文本字段,他們可以輸入名稱?認爲你真正的問題是在顯示錶單的控制器中。 –