0

新しいアクション「プレビュー」を追加するモデル「ジョブ」があります。この新しいアクションをサポートするために、routes.rbを次のように変更しました。

resources :jobs do
   member do
      get 'preview'
   end
end

次に、ジョブ作成アクションで次のようになります。

 if @job.save
    redirect_to preview_job_url

ただし、フォームを保存すると、プレビューURLにリダイレクトする代わりに、次のルーティングエラーが発生します。

Routing Error
No route matches {:action=>"preview", :controller=>"jobs"}

URLが正しく機能し(http:// localhost:3000 / jobs / id / Preview)、rakeルートを実行すると、適切なルートが存在するように見えるため、これが発生している理由を理解できません。

preview_jobs GET    /jobs/preview(.:format)            {:action=>"preview", :controller=>"jobs"}

何が起こっているのかについてのアイデアはありますか?すべての部品が揃っているように見えますが、私はRailsを初めて使用するので、明らかな何かが欠けていると確信しています。どうもありがとう。

4

1 に答える 1

3

'preview'をメンバーアクションとして定義しました。メンバーアクションは、モデルのインスタンスを参照します。Preview_job_urlを呼び出すときは、URLを作成できるように、特定のJobオブジェクトまたはJobのIDを渡す必要があります。これは理にかなっているはずです...URLを作成するジョブをフレームワークに指示しない場合、Railsは特定のモデルを参照するURLをどのように作成できますか?

コントローラでこれを試してください:

if @job.save
  redirect_to preview_job_url(@job)
于 2011-03-07T00:02:09.087 に答える