0

私はそれぞれタスクとリクエストの両方のコントローラーとモデルを持っています。リクエストの新しいアクションは、ルートに含まれているタスク:idによって異なります。検証エラーのためにリクエストを保存できない場合は、タスク:idを使用してリクエストコントローラーの新しいアクションをレンダリングできるようにする必要があります。ただし、以下のコードを実行すると、テンプレートが見つからないというエラーが発生します。

タスク:idをパラメーターとして使用して新しいテンプレートをレンダリングするにはどうすればよいですか?

/task/1/request/new


  if !@request.save
     render :template => new_task_request_path(@blog)    # /task/1/request/new
  end

----->エラー:テンプレートがありません-テンプレートブログ/ 1 / requests/newがありません

4

1 に答える 1

3

コードでnew_task_request_path(@blog)、相対URLを生成します。テンプレートをレンダリングするときは、相対URLではなく、テンプレートへのパスを指定する必要があります。

詳細情報がないと、ビューテンプレートがどこにあるかわかりませんが、createアクションのコードを次のように変更してみてください。

@task = Task.find(params[:id])
@request = @task.requests.new(params[:request])

if !@request.save
  render 'new'
end

その後、ビューでを使用してタスクIDにアクセスでき@task.idます。

Taskこれは、が多くRequestsあり、このアクションがあなたの中にあることを前提としていますRequestsController。別の関係を使用している場合は、必要に応じてコントローラーのアクションコードを更新する必要があります。同様に、別のコントローラーの場合は、テンプレートパスをのように更新する必要があります'requests/new'

于 2012-08-12T05:32:08.293 に答える