簡體   English   中英

將jQuery變量發送到Rails控制器

[英]Sending a jQuery variable to Rails controller

我正在嘗試從我的jQuery到Rails控制器獲取變量“ response.data.uri”,但是它不起作用。 我可以去到rails控制器,但是那里沒有變量。

jQuery的:

function responseCallbackHandler(response) {
   switch (response.status) {
     case 201:
         $.ajax({ url: '#{addbank_bankaccts_path}',
         type: 'POST',
         beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', '#{form_authenticity_token}')},
         dataType: "json",
         data: 'account_uri=' + response.data.uri
         success: function(response) {
           // successfully executed the controller method
           }
         });
         break;
     }
 }

routes.rb中:

post "/bankaccts/new" => 'bankaccts#addbank' 

控制器:

class BankacctsController < ApplicationController

  def addbank
      @uri = (params['customer_uri'])
      @id = (params['id'])
      @auri = (params['account_uri'])
      # all equal nil ^
      redirect_to root_url
  end

啊,我知道:在ruby中,單引號不執行變量插值。 因此,如果您發布的jquery出現在瀏覽器中,那么您的ajax請求的網址將是:

'#{addbank_bankaccts_path}'

...這是胡言亂語的-瀏覽器無法理解紅寶石或鐵軌。 瀏覽器中的網址必須如下所示:

http://mysite.com/js/myjs.js
js/myjs.js

如果您的jquery在名稱以.erb結尾的文件中,則在將文件發送到瀏覽器之前,rails將執行文件中的所有ruby代碼,但是ruby中的單引號不會執行變量插值。 這是一個例子:

name = 'Dave'
str = '#{name} says hello.'
puts str

--output:--
#{name} says hello

但是用雙引號引起來:

name = 'Dave'
str = "#{name} says hello."
puts str

--output:--
Dave says hello.

我不知道您是否來自python背景,所有引號都相等; 但是在包括紅寶石在內的許多語言中,單引號和雙引號都不等效。

您的form_authenticity_token存在相同的問題:

beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', '#{form_authenticity_token}')},

嘗試-

數據:{account_uri:response.data.uri,“ customer_uri”:SOME_VALUE,“ id”:SOME_VALUE}

暫無
暫無

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

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