繁体   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