3

Rails3.2.11ではうまくいかないような本当に奇妙なルーティングエラーに直面しています

エラーは次のとおりです。AbstractController::ActionNotFound(SubmissionsControllerのアクション'bulk_submissions_url'が見つかりませんでした)

次のようなルートがあります。

match 'submissions/bulk_submissions_url' => 'submissions#bulk_submissions_url', :as => 'bulk_submissions_url', :via => :post

次のようなSubmissionsController:

class SubmissionsController < ApplicationController

...
def bulk_submissions_url
    if signed_in?

      #get the cert that the user has if they are returning to tutorial
      if current_user.enrollments and current_user.enrollments.length > 0
        @enrollment = current_user.enrollments.last
      else
        #handle this
      end  

      @submission = Submission.create!(url: params[:url], description: "Please edit this description", work_type: "other", date_completed: DateTime.now.to_date)  

      if @submission.save
        @enrollment.submissions << @submission
        render :json => { success: true, submission_id: @submission.id }
      else
        render :json => { success: false }
      end

    end
end

そして、jQueryでリクエストを送信しています:

//save the submission
$.ajax({
type: 'POST',
    url: '<%= bulk_submissions_url_path %>',
    data: {url : $("#tutorial_add_work_url_input").val()},
    dataType: 'json'
});

足りないものはありますか?

前もって感謝します!

4

1 に答える 1

1

名前に_urlを使用している理由はありますか?my_route_pathやmy_route_urlなどのメソッドでアクセスできるmy_routeという名前のルートは混乱を招く可能性がありますが、ルートにmy_route_urlという名前を付ける場合は、my_route_url_pathと混乱しているmy_route_url_urlでアクセスする必要があります。

このルートを試してください:

match 'submissions/bulk_submissions' => 'submissions#bulk_submissions', :as => 'bulk_submissions', :via => :post

コントローラ:

class SubmissionsController < ApplicationController

  def bulk_submissions
    if signed_in?

      #get the cert that the user has if they are returning to tutorial
      if current_user.enrollments and current_user.enrollments.length > 0
        @enrollment = current_user.enrollments.last
      else
        #handle this
      end

      @submission = Submission.create!(url: params[:url], description: "Please edit this description", work_type: "other", date_completed: DateTime.now.to_date)

      if @submission.save
        @enrollment.submissions << @submission
        render :json => { success: true, submission_id: @submission.id }
      else
        render :json => { success: false }
      end

    end
  end
end

とajax

//save the submission
$.ajax({
type: 'POST',
  url: '<%= bulk_submissions_path %>',
  data: {url : $("#tutorial_add_work_url_input").val()},
  dataType: 'json'
});
于 2013-03-01T00:44:51.070 に答える