1

私は2つのモデルを持っています

class Project < ActiveRecord::Base

  attr_accessible :created_at, :name, :status, :company_id
  has_many :phases, :dependent => :destroy

end


class Phase < ActiveRecord::Base

  attr_accessible :created_at, :date_due, :name, :project_id, :status
  belongs_to :project

end

新しいフェーズが作成されたら、新しいフェーズが属するプロジェクトのプロジェクトの表示ページにユーザーを転送したいと思います。

私はこれといくつかのバリエーションを試しましたが、それを書くための最良の方法がよくわかりません:

def create
    @phase = Phase.new(params[:phase])

    respond_to do |format|
      if @phase.save
        redirect_to @phase.project
      else
        format.html { render action: "new" }
        format.json { render json: @phase.errors, status: :unprocessable_entity }
      end
    end
  end

ありがとう!


編集1

レーキ ルート:

          phases GET    /phases(.:format)                  phases#index
                 POST   /phases(.:format)                  phases#create
       new_phase GET    /phases/new(.:format)              phases#new
      edit_phase GET    /phases/:id/edit(.:format)         phases#edit
           phase GET    /phases/:id(.:format)              phases#show
                 PUT    /phases/:id(.:format)              phases#update
                 DELETE /phases/:id(.:format)              phases#destroy
        projects GET    /projects(.:format)                projects#index
                 POST   /projects(.:format)                projects#create
     new_project GET    /projects/new(.:format)            projects#new
    edit_project GET    /projects/:id/edit(.:format)       projects#edit
         project GET    /projects/:id(.:format)            projects#show
                 PUT    /projects/:id(.:format)            projects#update
                 DELETE /projects/:id(.:format)            projects#destroy

編集2

更新されたコントローラー - 現在動作中です。Respond_to ブロックを削除する必要がありました (おそらく、リダイレクトの周りにさまざまな形式のオプションを含めることもできます)

  def create
    @phase = Phase.new(params[:phase])

    if @phase.save
      redirect_to project_url(@phase.project)
    else
      render action: "new"
    end

  end
4

1 に答える 1

1

次のことを試してください。

redirect_to project_path(@phase.project)

注: これは、ルートが正しく設定されている場合にのみ機能します。

詳細については、Rails ガイドの「 redirect_to の使用」セクションを参照してください。

編集:

問題はおそらくidtoを渡していないことproject_path(:id)です。

redirect_to project_path(@phase.project.id)
于 2012-12-04T16:01:40.980 に答える