0

私のビューには、ajax 経由で以下のメソッドを呼び出すリンクがあります。私は基本的に 経由@application.update_attributes(params[:application])で挿入されたレコードの ID を取得しようとしていますが、 を呼び出すと@curr_app = @application.application_field.last、ajax 呼び出しの前に挿入された最後のレコードが返されます。

たとえば、最初にページにアクセスして、application_fields テーブルの最高の ID が 50 であると言った場合、ajax リンクをクリック@curr_app.idすると、何回 ajax リンクをクリックしても、常に 50 になります。

@application.application_field.lastデータベースの最後のレコードを取得する必要があると思いましたか? 最後に挿入されたレコードを取得するにはどうすればよいですか? 再クエリする必要がありますか?

  # PUT /applications/1
  # PUT /applications/1.json
  def update
    @application = Application.find(params[:id])

    respond_to do |format|
      if @application.update_attributes(params[:application])

        @curr_app = @application.application_field.last
        puts @curr_app.id

        format.html { redirect_to @application, notice: 'Application was successfully updated.' }
        format.json { head :no_content }
        format.js
      else
        format.html { render action: "edit" }
        format.json { render json: @application.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end
4

4 に答える 4

0

私はあなたがしなければならないと信じています

@application.reload

ただし、Rails は同じ要求処理中にクエリをキャッシュするため、データベースではなくキャッシュから結果を取得する場合があります。どこから取得したかを確認するには、ログを試してみるだけです。

または多分

@curr_app = ApplicationField.last
于 2012-12-07T21:25:21.730 に答える
0

最後のレコードを取得するために、データベースを再クエリする必要がありました。

于 2013-01-03T20:16:08.267 に答える
0

やってみました:

@app = Application.find(:last)
于 2013-03-27T14:03:33.637 に答える