![](/img/trans.png)
[英]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.