0

ユーザーが仕事を作成して応募できるアプリを作成しようとしていますが、問題が発生したようです。

データベースのアプリ (求人応募) テーブルに渡す 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

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 は完全に渡され、apps テーブルに表示されますが、job_id を正しく渡す方法に完全に困惑しています。

この質問に回答できるように編集できるものを見逃した場合は、お知らせください。

よろしくお願いします。

4

3 に答える 3

1

new_app_path リンクで job_id を渡していません。に変更してみてnew_app_path(:job_id => @job.id)、コントローラーに追加してください@job = Job.find(params[:job_id])

于 2012-06-25T07:29:07.987 に答える
0

ルートがアプリをジョブ内にネストすると仮定すると、新しいアプリケーション ページへのリンクは次のようになります。

link_to 'apply now', new_app_job_path(@job)

新しいアクションには、params[:job_id]@job を設定するために使用できる があります

次に、フォームで、フォームへの呼び出しは次のようになります

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

これにより、作成アクションにも、アプリケーションの作成時に使用できる :job_id パラメーターが含まれるようになります。

于 2012-06-26T07:22:28.427 に答える
-1

呼び出す必要があるアクションは ではありcreateませんnew

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
于 2012-06-25T07:51:24.227 に答える