簡體   English   中英

Rails-來自JavaScript的呼叫控制器

[英]Rails - call controller from javascript

極端的軌道nooby在這里。 我正在嘗試從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 / referred_friend.rb

我把它放在路由文件中,但是我猜這也是不正確的

resources :referred_friends do
  get :refer_email_exists
end

謝謝你的幫助!

想要的方式是對您的路線進行ajax調用,例如:

$.ajax({
  url: "<url route to refer_email_exists>",
  success: function(result){
  // check result then
  alert "That email already exists!"
  }
});

簡單的AJAX調用呢?

$.ajax({
    url: Routes.test_email_path(email),
    type: 'POST'
}).done(function (data) {
    // handling success
}).fail(function (data) {
    // handling failure
}   

路由來自js-routes gem。

Rails為遠程操作提供了按鈕短代碼,例如通過AJAX調用Rails控制器操作。 從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."

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM