我正在关注这个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 所做的事情有了更好的理解(我希望),所以我重新定义了我的方法:
成分控制器.rb
def get_restaurant_id
Menu.find_by_id(params[:m_id]).restaurant_id
end
但我得到一个Template is missing
and 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 ) {
...