我正在关注此SO answer,所以我试着调用我定义的方法:
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)
我不确定我做错了什么。还有另一种通过AJAX调用传递m_id
参数的方法吗?
理想情况下,我想让AJAX调用返回餐馆ID的整数值。
PS - 这是替代解决方案我已经找到了original SO post我想要克服的问题。
我现在对于我正在使用GET / POST做什么有所了解(我希望)所以我重新定义了我的方法:
ingredients_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
我将方法改为:
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 ) {
...
答案 0 :(得分:0)
我能够弄清楚。这是我做的:
<强> restaurants_controller.rb 强>
def get_restaurant_id
r_id = Menu.find_by_id(params[:m_id]).restaurant_id.to_s
render :json => r_id
end
由于我将方法移至restaurants_controller
的{{1}},因此请务必更新ingredients_controller
以反映此更改。所以它看起来像这样:
routes.rb
我的jQuery / Ajax现在看起来像这样:
resources :restaurants do
get :get_restaurant_id, on: :collection
end
现在,您的m_id = $('#dish_menu_id').val() # To get the menu_id from the dropdown menu
r_id = "" # restaurant_id variable
# Call my get_restaurant_id method
request = $.ajax
type: 'GET'
url: "/restaurants/get_restaurant_id?m_id=" + m_id
async: false
success: (text) ->
r_id = text
console.log(request) # Just for programming purpose to show what I'm getting from AJAX
将保留r_id