Ruby on rails 向Rails控制器发送jQuery变量
我试图将变量“response.data.uri”从我的jQuery获取到rails控制器,但它不起作用。我可以访问rails控制器,但变量不在那里 jQuery:Ruby on rails 向Rails控制器发送jQuery变量,ruby-on-rails,ruby,ajax,jquery,Ruby On Rails,Ruby,Ajax,Jquery,我试图将变量“response.data.uri”从我的jQuery获取到rails控制器,但它不起作用。我可以访问rails控制器,但变量不在那里 jQuery: function responseCallbackHandler(response) { switch (response.status) { case 201: $.ajax({ url: '#{addbank_bankaccts_path}', type: 'POST',
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;
}
}
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
routes.rb:
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;
}
}
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
控制器:
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;
}
}
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
class BankacctsController
啊,我知道:在ruby中,单引号不执行变量插值。因此,如果您发布浏览器中显示的jquery,ajax请求的url将是:
'#{addbank_bankaccts_path}'
…这是胡言乱语——浏览器不理解ruby或rails。浏览器中的Url必须类似于:
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背景,所有的引号都是等价的;但是在很多语言中,包括ruby,单引号和双引号是不等价的
您的表单\u真实性\u令牌存在相同的问题:
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', '#{form_authenticity_token}')},
试试-
数据:{account\u uri:response.data.uri,'customer\u uri':SOME\u VALUE,'id':SOME\u VALUE}我没有看到您使用
params['account\u uri']
,您尝试过吗?没有参数['account\u uri']是否检查控制器中的params
散列,以确保数据通过,并检查response.data.uri
是否在浏览器控制台中具有您期望的值。response.data.uri确实具有我在js中想要的值。当我到达控制器时,让我检查params中的paramsyeah nothing