[英]Sending Javascript variable to Rails 3 controller using Jquery
[英]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.