2016-05-19 45 views
1

我有2個型號,UserQueue。我希望能夠將@user.id添加到users_controller內的隊列表中。Rails 4:從其他控制器創建記錄

我的車型有:

class Queue < ActiveRecord::Base 
    has_many :users 
end 

class User < ActiveRecord::Base 
    belongs_to :queue 
end 

和我users_controller功能是:

def addToQueue 
    queue_entry = Queue.new(user_id: @user.id) # where things go wrong 
    if queue_entry.save 
     redirect_to user_path(@user), notice: "#{@user.name} has been successfully added to the queue." 
    else 
     redirect_to user_path(@user), :flash => {:error => "Error: #{@user.name} was NOT added to the queue."} 
    end 
end 

我在show.html.erb視圖中的鏈接此功能的user爲:<%= link_to 'Add to queue', addToQueue_path(@user) %>

出於某種原因,我不斷收到:wrong number of arguments (1 for 0)指向該行queue_entry = Queue.new(user_id: @user.id)

我應該怎麼做?

回答

1

您設置關係的方式意味着用戶表有一個外鍵queue_id而不是其他方式。

由於一個Userbelongs_to一個Queue實例然後queue_id有一個實例要被分配爲在User實例的屬性。

+0

嗯,這似乎非常直觀,因爲隊列將基本上是隊列來容納選擇用戶。換句話說,我希望我的隊列表由選擇的用戶ID組成。還有另一種方法可以做到嗎? –

+0

正確,這意味着一個隊列可以讓很多用戶正確嗎? – Cyzanfar

+0

是的,那是我的意思 –