0
Rails 3アプリケーションのコントローラーでは、フィールドが変更されたかどうかをテストしてから、リダイレクトページでメッセージを点滅させようとしています。フィールドチェンジのコントローラーテストにおけるRails 3
これは私がしようとしているコードです:
class CostprojectsController < ApplicationController
def update
@costproject = Costproject.find(params[:id])
@costquestion = @costproject.costquestion
nextpath = edit_costquestion_path(@costquestion) if params[:tab1]
nextpath = costprojects_editcostestimates_path(:id => @costproject.id) if params[:tab2]
nextpath = costprojects_editattachments_path(:id => @costproject.id) if params[:tab3]
if nextpath == nil
if User.current.admin?
nextpath = costprojects_path
else
nextpath = clients_costcurrent_path
end
end
flash[:success] = "Project Submitted" if @costproject.submit_date_changed?
respond_to do |format|
if @costproject.update_attributes(params[:costproject])
format.html { redirect_to nextpath }
format.json { render json: @costproject }
else
format.html { render action: "edit" }
format.json { render json: @costproject.errors, status: :unprocessable_entity }
end
end
end
この行は動作していない:
flash[:success] = "Project Submitted" if @costproject.submit_date_changed?
costproject.submit_date @は有効なフィールドである - そしてそれは、テスト中に更新なってき。
感謝を。コードを移動しようとしました。しかし、何らかの理由で「もし」が真実を返さない。 "if"部分を削除すると、フラッシュが表示されます。 – Reddirt
@ costproject.previous_changesにupdate_attributesの後に何かが含まれていないかどうかを確認します。なぜなら、update_attributesは変更された情報を消去する可能性が高いからです。メソッド –
私は 'flash [:success] = @ costproject.changes'を追加して何も得ませんでした – Reddirt