私はこのSOの答えに従っているので、定義したこのメソッドを呼び出そうとしています:
class IngredientsController < ApplicationController
...
def get_restaurant_id(menu_id)
Menu.find_by_id(menu_id).restaurant_id.to_i
end
AJAX 呼び出しを介して:
m_id = $('#dish_menu_id').val()
$.ajax "/ingredients/get_restaurant_id(" + m_id + ")"
私は自分のroutes.rbを次のように定義しました:
resources :ingredients do
get :get_restaurant_id, on: :collection
end
しかし、私console.log($.ajax "/ingredients/get_restaurant_id(" + m_id + ")")
はこのエラーメッセージを表示します:
GET http://localhost:3000/ingredients/get_restaurant_id(1) 404 (Not Found)
何が間違っているのかわかりません。m_id
AJAX 呼び出しを介してパラメーターを渡す別の方法はありますか?
理想的には、AJAX 呼び出しでレストラン ID の整数値を返すようにしたいと考えています。
PS - これは、私が克服しようとしていた問題について、元の SO 投稿に思いついた代替ソリューションです。
編集 1
GET/POST で何をしているのかについて少し理解が深まったので (願わくば)、メソッドを次のように再定義しました。
components_controller.rb
def get_restaurant_id
Menu.find_by_id(params[:m_id]).restaurant_id
end
しかし、私は と を取得しTemplate is missing
ます500 Internal Server Error
。
これにはテンプレートがないことがわかりました。単純な SQL クエリを実行してレストラン ID を取得し、それを Ajax 呼び出しに返す方法はありますか?
したがって、私の Ajax 呼び出しは次のようになります。
$.ajax "/ingredients/get_restaurant_id?m_id=" + m_id
編集2:ほぼそこ
メソッドを次のように変更しました。
def get_restaurant_id
menu_id = params[:m_id]
r_id = Menu.find_by_id(params[:m_id]).restaurant_id.to_s
render :json => r_id
end
そして今、私のAjaxではObject
、フィールド内に答えがあるが、responseText
それにアクセスできないようです。
私はこれを試しました:
r_id = $.ajax "/ingredients/get_restaurant_id?m_id=" + m_id
alert "After call to get_restaurant_id " + r_id.responseText
しかし、それを取得しundefined
ます。
私のObject
コンソールログは次のようになります。
...
readyState: 4
responseText: "1"
setRequestHeader: function ( name, value ) {
...