极端轨道在这里很棒。 我试图从一个javascript文件中对一个控制器进行一个简单的调用而且相当困难,研究表明我需要一个ajax请求。你们能指出我正确的方向吗?
这是我的控制器 - 它只返回一个布尔值
class ReferredFriend < ActiveRecord::Base
def refer_email_exists(email)
/return a boolean
这是我的javascript - 明显不正确的语法,但你得到我的一般想法
if ReferredFriend.refer_email_exists(message.get('to_email')) == 'true'
alert "That email already exists!"
到控制器的路线是:app / models / referenced_friend.rb
我把它放在我的路线文件中,但是我猜这也是不正确的
resources :referred_friends do
get :refer_email_exists
end
感谢您的帮助!
答案 0 :(得分:1)
你想要的方法就是对你的路线进行ajax调用,例如:
$.ajax({
url: "<url route to refer_email_exists>",
success: function(result){
// check result then
alert "That email already exists!"
}
});
答案 1 :(得分:0)
简单的AJAX调用怎么样?
$.ajax({
url: Routes.test_email_path(email),
type: 'POST'
}).done(function (data) {
// handling success
}).fail(function (data) {
// handling failure
}
路线来自js-routes gem。
答案 2 :(得分:0)
Rails为远程操作提供按钮短代码,例如调用Rails控制器操作VIA AJAX。来自Rails文档http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#link-to
link_to
是帮助生成链接的助手。它有一个:remote
选项,您可以这样使用:
<%= link_to "an article", @article, remote: true %>
生成:
<a href="/articles/1" data-remote="true">an article</a>
您可以使用form_for绑定到相同的Ajax事件。这是一个例子。假设我们有一个文章列表,只需点击一下即可删除。我们会生成一些像这样的HTML:
<%= link_to "Delete article", @article, remote: true, method: :delete %> and write some CoffeeScript like this:
$ -> $("a[data-remote]").on "ajax:success", (e, data, status, xhr) -> alert "The article was deleted."