2012-06-25 5 views
0

사용자가 작업을 생성하고 적용 할 수 있지만 문제가 발생한 것으로 보이는 앱을 만들려고합니다.모델간에 객체 ID 전달 레일

내 데이터베이스의 내 응용 프로그램 (작업 응용 프로그램) 테이블로 job_id를 전달할 수 없습니다.

이 응용 프로그램이 성공적으로 작동하게하려면 작업 응용 프로그램을 제출할 때이 정보가 내 응용 프로그램 테이블에 저장되도록 job_id와 user_id를 사용자 응용 프로그램 양식에 전달해야합니다. 작업 소유자는 수신 한 애플리케이션을 검토 할 수 있습니다.

내 모델에서 다음과 같은 연결을 가지고 :

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 

내 작업 컨트롤러의 쇼 페이지 내가 가지고있는 다음 (사용자가 클릭 응용 프로그램을 시작하기 위해 "지금 적용"할 수있는 페이지)에 정의 :

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

실제 페이지에 "지금 적용"할 수있는 링크는 다음과 같습니다

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

및 내

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

내 user_id를 완벽하게 전달하고 내 애플 리케이션 테이블에 표시되지만 나는 완전히 정확하게 작업 ID를 전달하는 방법에 대한 난처한 상황에 빠진 오전 : 애플리케이션 컨트롤러의 새 페이지는 내가 가지고있다.

내가 답을 얻을 수 있도록이 질문에 편집 할 수있는 내용을 놓친 경우 알려주십시오.

미리 도움 주셔서 감사합니다.

답변

1

new_app_path 링크에 job_id를 전달하지 않습니다. new_app_path(:job_id => @job.id)으로 변경하고 컨트롤러에 추가하십시오. @job = Job.find(params[:job_id])

-1

호출해야하는 작업은 new이 아닌 create입니다.

변경 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 
0

일 안에 당신의 경로 둥지 애플리케이션을 가정 할 때, 새로운 응용 프로그램 페이지로 링크

과 같이해야한다
link_to 'apply now', new_app_job_path(@job) 

새 작업에는당신이 보장

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

과 같아야의 형태에 그런

, 당신의 전화가 형성 @job 설정하는 데 사용할 수있는당신의도해야합니다 작업을 만들 : 당신이 사용할 수있는 작업 ID 매개 변수를 응용 프로그램을 만들 때