0

我有一個has_many & belongs_to公司和worker之間的關聯。我希望能夠通過我的工作人員索引頁面中的鏈接將工作人員添加到公司。我想要保存屬於登錄公司的工作人員記錄,並使用添加到其工作人員的新工人更新公司/工人索引頁面。從不同的模型視圖創建記錄(不涉及新行爲)

我一直無法做到這一點。這裏是正在發生的事情:

我的路線有類似:

namespace :company do 
    resources :workers, :only => [:index, :create] 
    end 

    resources :workers 

我有了在我的控制器公司獲得令牌的Cookie會話的before_action方法:

的ApplicationController:

@company = Company.find_by_access_token("vZAni6K6") 
cookies[:access_token] = @company.access_token 

And Company :: WorkersController

render :file => "public/401.html", :layout => nil, :status => :unauthorized and return if cookies[:access_token] != @company.access_token 

在我的工人/ index.html.haml路,我有:

= "There are #{@workers.count} workers!" 

They are: 
- @workers.each do |worker| 
    = worker.name 
    = link_to "Hire a worker", company_workers_path(:worker_id => worker), :method => :post 
%%br 

%p= @company.name 

我希望能夠點擊「僱用工人鏈接」,然後被重定向到公司/ workers.html .haml路徑,然後將列出他們的工作人員更新最近添加的工作人員剛剛通過鏈接添加。而不是要帶我去公司/工人路

當我目前點擊鏈接(以數據庫爲說工人#2)它需要我

company/workers?worker_id=2 

而且它不會工人保存到與公司的關係。

我公司/工人控制器有以下幾點:

def create 
    @worker = @company.worker.build(:worker_id => params[:worker_id]) 
    @worker.save 
    redirect_to :action => 'index' 
    end 

記得我有我的控制器一before_action,調用其他控制器方法以及前保存@company實例變量。

我有一個model屬於某公司的模型&模型has_many工作人員的公司,我已經在遷移中添加了引用密鑰。

什麼問題?爲什麼奇怪的路線,爲什麼我的記錄沒有保存,我是一個新手,所以原諒這個簡單的問題。

回答

0

在第一次看,我看你可能有兩個錯誤:

  1. 您的公司模型類的has_many工人,所以分配(或添加)工人到公司,我相信它一定是這樣的:

    @worker = Worker.find(params[:worker_id]) 
    @worker.company = @company 
    @worker.save! 
    # depending in your schema, it could be something like this as well: 
    # @company.workers << @worker 
    
  2. 重定向到公司/工人,當您使用嵌套的路線,它必須像

    redirect_to company_workers_path(@company) 
    

希望這有助於!

+0

這並沒有解決問題,現在URL與公司/ workers.id完成,但仍然沒有保存工人到公司 – coderwannabe2

+0

你可以把你的模型的代碼?所以我可以更好地看到你的實現。 – Moh

相關問題