2017-09-01 11 views
0

データベース操作に別のRails APIを使用するrails 5.0.1 app(App 1)が動作しています。 App1はアクティブレコードを使用していませんが、FlexiRestをApiコールに使用しています。更新が失敗した場合、レスキューブロックにユーザ入力データをレンダリングする

作成または更新メソッドが呼び出されると、すべてのデータがjson形式でrails apiに送信されます。 apiが何らかのエラーをスローする場合は、レスキューブロック内にキャッチする必要があります。また、ユーザーが入力したデータは、レスキュー後にレンダリングした後にレンダリングする必要があります(レンダリング用):

ここ

は私のコードは

def update 
     respond_to do |format| 
     begin 
      if @booking.update({id: @booking.booking.id, booking: booking_params}) 
      format.html { redirect_to excel_front_innstats_path, notice: display_notice(t("label.detailed_reservation.reservation")) } 
      else 
      format.html { render :edit } 
      end 
     rescue => e 
      #here assign the booking object with user entered data, 
      #so that the form will not loose the data 
      #if exception occurs 

      flash_error_message(:error, e.result) 
      format.html { render :edit } 
     end 
     end 
    end 
+0

コードの結果を、あなたが思うものと結果の違いを追加してください。 –

+0

あなたの質問は何ですか? – mudasobwa

+0

@artgb now editはデータベースにあるデータでビューをレンダリングします。ユーザーが送信したフォームのデータが必要です。 –

答えて

0

である。これは、簡単に実装することができ、あなたは@bookingedit.html.erb形でいくつかの変更を加える必要があります。

edit.html.erbをレンダリングは、それぞれの入力フィールド値のparamsハッシュ内に存在するかどうかを確認してください。値が存在する場合は、paramsのフィールド値を割り当て、そうでない場合は、@bookingのフィールド値を割り当てます。例えば、編集(更新)については

例:新(Ureate)については

<input type='text' name='booking_name' value="<%= params[:booking_name] ? params[:booking_name] : @booking.booking_name%>"/> 

<input type='text' name='booking_name' value="<%= params[:booking_name]%>"/> 

私はあなたのアプローチを得たいと考えています。

+0

それは私が考えるスマートな方法ではありません –

関連する問題