Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在模型和轨道之间传递对象ID_Ruby On Rails_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 在模型和轨道之间传递对象ID

Ruby on rails 在模型和轨道之间传递对象ID,ruby-on-rails,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3.1,我正在尝试创建一个应用程序,允许用户创建和申请工作,但似乎遇到了一个问题 我无法将作业id传递到数据库中的“我的应用程序(作业应用程序)”表中 要使此应用程序成功运行,我需要将job_id和user_id传递到用户的申请表中,以便在他们提交工作申请时,此信息存储在my apps表中。然后,工作负责人将能够审查他们收到的申请 我的模型中有以下关联: class App < ActiveRecord::Base belongs_to :job belongs_to :user cla

我正在尝试创建一个应用程序,允许用户创建和申请工作,但似乎遇到了一个问题

我无法将作业id传递到数据库中的“我的应用程序(作业应用程序)”表中

要使此应用程序成功运行,我需要将job_id和user_id传递到用户的申请表中,以便在他们提交工作申请时,此信息存储在my 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
实际页面上的“立即应用”链接为:

<%=link_to "Apply Now", new_app_path %>
我的用户id通过得很好,并出现在我的应用程序表中,但我完全不知道如何正确通过作业id

如果我错过了任何我可以编辑成这个问题,以帮助您回答它,那么请让我知道


提前感谢您的帮助

您没有在新的应用程序路径链接中传递作业id。尝试将其更改为
new\u app\u path(:job\u id=>@job.id)
,并在控制器中添加
@job=job.find(params[:job\u id])
您应该调用的操作是
创建
而不是
新建

链接更改为
代码,如下所示:

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

假设您的应用程序嵌套在作业中,那么您指向新应用程序页面的链接应该类似于

link_to 'apply now', new_app_job_path(@job)
在新操作中,您将有一个
参数[:job\u id]
,可用于设置@job

然后在表单上,您对表单的调用应该如下所示

form_for [@job, @app] do |f|
  ...
这将确保创建操作还具有:job_id参数,您可以在创建应用程序时使用该参数

def create
  app = current_user.apps.build(params[:app])
  if app.save
    # handle success
  else
    # handle error
  end
end
link_to 'apply now', new_app_job_path(@job)
form_for [@job, @app] do |f|
  ...