一个ajax和rails交互的例子
首先,这里用了一个,query信息解析的包,如下
https://github.com/rapportive-oss/jquery-parsequery
主要做如下:
$.parseQuery({query: "id[]=1&id[]=2", array_keys: /^ids$/, decode: function (input, context) { input = this.default_decode(input); if (context === null) { return input.replace(/\[\]$/, 's') } else if (context === "ids") { input = parseInt(input); if (isNaN(input)) { throw URIError("id was not a number"); } } return input; }}) == {'ids':[1, 2]}
// If direct link to property query is used send to Railstry { var hash = location.hash.substr(1, location.hash.length); if (location.pathname == '/properties' && hash.length > 0) { $.parseQuery.separator = ','; var data = $.parseQuery(hash); $.ajax({ url : '/properties', type : 'GET', data : data, dataType : 'script' }); }} catch(err) { }
# app/controllers/application_controller.rbhelper_method :params_to_urldef params_to_url rails_params = [ 'action', 'controller', 'commit', '_', 'authenticity_token', '_method', 'format', 'utf8'] params_copy = params.dup params_copy.map { |k,v| "#{k}=#{URI.escape(v.to_s)}" if !v.empty? && !rails_params.include?(k) }.compact.join(',')end
# app/views/properties/index.js.erb<%- if @properties.size > 0 -%># For example, update DIV with found propertieswindow.location.hash = '<%= params_to_url %>';<%- end -%>