簡體   English   中英

跨模型Rails傳遞對象ID

[英]Passing object ID across models Rails

我正在嘗試創建一個允許用戶創建和申請工作的應用程序,但似乎遇到了問題。

我無法將job_id傳遞到數據庫中的應用程序(作業應用程序)表中。

為了使此應用程序成功運行,我需要將job_id和user_id傳遞給用戶的申請表,以便他們提交工作申請時,此信息存儲在我的apps表中。 然后,工作負責人將能夠查看他們收到的申請。

我的模型中具有以下關聯:

 class App < ActiveRecord::Base
 belongs_to :job
 belongs_to :user

 class Job < ActiveRecord::Base
 belongs_to :user
 has_many :apps
 has_many :applicants, :through => :apps, :source => :user

 class User < ActiveRecord::Base
 has_many :apps
 has_many :jobs
 has_many :jobs_applied_for, :through => :apps, :source => :job

在我的Jobs控制器的顯示頁面(用戶可以從中單擊“立即申請”以啟動應用程序的頁面)上定義,我具有以下內容:

def show
  @job = Job.find(params[:id])    
end

實際頁面上“立即申請”的鏈接為:

<%=link_to "Apply Now", new_app_path %>

在我的Apps控制器的新頁面上,我有:

def new
  @user = current_user
  @app = @user.apps.build
end

我的user_id傳遞完美,並出現在我的應用程序表中,但我完全對如何正確傳遞job_id感到困惑。

如果我錯過了任何可以編輯的問題以幫助您回答,請告訴我。

在此先感謝您的幫助!

您沒有在new_app_path鏈接中傳遞job_id。 嘗試將其更改為new_app_path(:job_id => @job.id) ,然后在您的控制器中添加@job = Job.find(params[:job_id])

假設您的路線將應用程序嵌套在作業中,則指向新應用程序頁面的鏈接應類似於

link_to 'apply now', new_app_job_path(@job)

在您的新操作中,您將有一個params[:job_id]可用於設置@job

然后在表單上,​​您對表單的調用應如下所示

form_for [@job, @app] do |f|
  ...

這樣可以確保您的create動作還將具有:job_id參數,您可以在創建應用程序時使用它

你應該調用的作用是createnew

更改link_to代碼,如下所示:

<%=link_to "Apply Now", apps_path(:app => {:job_id => @job.id}), :method => :post %>

在您的控制器中:

def create
  app = current_user.apps.build(params[:app])
  if app.save
    # handle success
  else
    # handle error
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM