如何在 Rails 6.1 中使用 AJAX 请求执行具有属性的 ruby 函数?
Posted
技术标签:
【中文标题】如何在 Rails 6.1 中使用 AJAX 请求执行具有属性的 ruby 函数?【英文标题】:How to execute ruby function with attributes using AJAX request in Rails 6.1? 【发布时间】:2021-08-27 15:10:07 【问题描述】:我有以下家庭控制器:
class HomeController < ApplicationController
def index
@data = EmergencyFriend.all
@jsonData = JSON.pretty_generate(@data.as_json)
end
def about
end
def alertEmergencyContant
account_sid = "my id"
auth_token = "my token"
@client = Twilio::REST::Client.new(account_sid, auth_token)
@client.messages.create(
to: "+number 1",
from: "+number 2",
body: "hello world !"
)
end
end
基本上,在我的home/index.html.erb
中只有一个按钮。当按下按钮时,它会显示一条警报消息,允许用户选择一个选项来发送短信。
我要做的是在我的家庭控制器中调用alertEmergencyContant
方法,以便我可以发送消息。我还想将 phone_number 作为该请求的参数传递。有人建议为此我应该使用 AJAX。我在我的 rails 项目中成功安装了 jquery 和 ajax 并按预期工作。我无法理解的是如何将其创建为 POST 请求。
我的主目录的路线列表是:
root GET / home#index
root GET /home/about(.:format) home#about
但是alertEmergencyContant
上什么都没有。如何在路由中声明它并将其作为 POST 请求?如何使用 AJAX 将属性从 javascript 传递给 ruby?
到目前为止,这是我的 ajax 请求(可行):
$.ajax(
url: '/',
type: 'GET',
success: function(event)
alert("sending Message");
);
更新:
def about
@thisNumber = params[:phone_number]
puts "helllloooooooooooooo " + @thisNumber
end
function ajaxRequest()
$.ajax(
url: 'home/about/?phone_number:1244211',
type: 'GET',
success: function(event)
alert("passed");
,
failed: function()
alert("has failed")
,
done: function()
alert("after")
);
【问题讨论】:
【参考方案1】:您需要为您的操作添加路线
# routes.rb
post 'some_url' => 'home#alert_emergency_contact'
您现在可以在您的 javascript 中使用它
$.ajax(
url: '/some_url', // This needs to match what you choose in routes.rb
type: 'POST',
success: function(event)
alert("sending Message");
);
PS:在 Ruby 中,动作名称是 always_snake_case,而不是 camelCase
【讨论】:
以上是关于如何在 Rails 6.1 中使用 AJAX 请求执行具有属性的 ruby 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?