[英]ajax GET json data sending to controller problems
我打电话
$.get('/profile', {'data_id': 0}, null, 'script');
当发生特定事件时,在我的profile/index.html.haml
。 假设在传递json数据时加载profile/index.js.erb
。 在我的个人资料控制器的index
操作中,我有
@dataid = params[:data_id]
if @dataid == 0
#do something, ie set variables that index.js.erb needs
else
#do something else
end
但是, if
语句似乎不起作用,因此我认为我的js.erb
文件无法正确加载(根本无法加载)。
但是,如果我做if !dataid.nil?
而不是== 0 (or some other value)
,它的工作方式类似于在插入if语句/js.erb之前,因此必须确保dataid是某个值...
另外,如果我不使用if
语句, if
在我的js.erb
我执行dataid = <%= raw @dataid %>; alert(dataid);
dataid = <%= raw @dataid %>; alert(dataid);
,一切正常,警报正确-dataid为0。那么为什么似乎首先设置raw @dataid
的控制器不知道@dataid
的值是什么? 我很困惑
主要目的是除非需要(如data_id指定),否则不执行控制器中的所有操作。 同样以这种方式,我认为我可以在js.erb中执行相同的操作-仅基于此参数运行我需要的部分。
通过HTTP来的所有内容都将以字符串形式到达。 如果与“ 0”比较,则很有可能比较相等。 在您的控制器代码中尝试以下操作:
Rails.logger.debug "All params are:\n#{params.inspect}"
Rails.logger.debug "I got params[:data_id] = '#{@dataid}'"
Rails.logger.debug "The type is: #{@dataid.class}"
Rails.logger.debug "Comparison yields: #{@dataid == 0}"
然后查看日志。 您会明白我在说什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.