0

ユーザーを同じページにとどめ、更新が実行された後にJavascriptを実行しようとしています。

ただし、js.erbが呼び出されないようで、代わりにルート「http:// localhost:3000 / upload_images / id」にリダイレクトされ、firebugコンソールが生成します...

"NetworkError: 406 Not Acceptable -http://localhost:3000/upload_images/id"

アクションの更新

    def update  
    @upload_image = UploadImage.find(params[:id])
    #If this image is set as the preview restore all associated images to default
    if params[:upload_image][:preview] == "1"
      other_uploads = @upload_image.upload.upload_images.where("not upload_images.id = ?", @upload_image.id)
      other_uploads.each do |upload_image|
        upload_image.preview = "0"
        upload_image.save
      end
    end      
    respond_to do |format|    
      if @upload_image.update_attributes(params[:upload_image])
        #keep the user on current page and call some Javascript
        format.js{render :template => 'update.js.erb'}
      else
        format.html { render action: "edit" }
        format.json { render json: @upload_image.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end

Update.js.erb

alert("hello world!");

フォームを編集

<%=form_for(@upload_image) do |f| %>
   ....
<% end %>

ライブアップデートを表示することは私にとって重要ではありません。ユーザーがそれらを表示するために更新する必要があるかどうかは関係ありません。ページの状態をそのままにして(JQueryによって行われたいくつかの変更を除いて)、データベースに投稿したいだけです。

4

1 に答える 1

2

おそらく、リモートフォームに切り替える必要があります。

<%= form_for(@upload_image, :remote => true) do |f| %>

それ以外の場合、フォームはHTTP応答を期待するHTTPPOSTを試行します。

于 2012-07-04T21:14:55.630 に答える