Tag: 哈希

如何在Rails中将XML转换为哈希?

如何在Ruby中将XML主体转换为哈希? 我有一个XML体,我想解析成哈希 2010-11-10T09:00:00 2010-11-10T09:20:00 2010-11-10T09:20:00 2010-11-10T09:40:00 2010-11-10T09:40:00 2010-11-10T10:00:00 2010-11-10T10:00:00 2010-11-10T10:20:00 2010-11-10T10:40:00 2010-11-10T11:00:00 我想把它转换成这样的哈希: { :times_in_my_day => { :time_data = > [ {:start_time=>”2010-11-10T09:00:00″, :end_time => “2010-11-10T09:20:00″ }, {:start_time=>”2010-11-10T09:20:00”, :end_time => “2010-11-10T09:40:00″ }, {:start_time=>”2010-11-10T09:40:00”, :end_time => “2010-11-10T10:00:00″ }, {:start_time=>”2010-11-10T10:00:00”, :end_time => “2010-11-10T10:20:00″ }, {:start_time=>”2010-11-10T10:40:00”, :end_time => “2010-11-10T11:00:00” } ] } } 理想情况下,标记会转换为snake_case符号并成为哈希中的键。 此外,日期时间缺少其时区偏移。 它们位于当地时区(不是UTC)。 所以我想解析它以显示本地偏移量,然后将xml日期时间字符串转换为Rails DateTime对象。 结果数组将是这样的: […]

Ruby on Rails 3.每个人都有问题

我是Ruby on Rails的新手,并且学习得很好,但似乎遇到了一个我似乎无法解决的问题。 运行Rails 3.0.9和Ruby 1.9.2 我在我的视图中运行以下语句: 这在我的控制器中: class AdminController < ApplicationController def flyers @events = Event.all end end 这会遍历每个记录并输出相应的名称,但问题是最后它会显示所有记录的所有信息,如下所示: [#] 我是这个网站的新手,所以我不确定你是否需要更多的细节,但毕竟我还在学习任何帮助。 提前致谢。

订单数组。 数组的未定义方法`order’。 将数组转换为哈希?

我有一个城市模型,在城市的展示活动中,我想要在城市中的特定位置附近的酒店。 城市有很多地方; 酒店正在使用Geocoder near方法进行搜索。 为了添加订单function,我一直关注Ryan Bates的截屏video#228 ,但这种方法似乎不适用于数组, undefined method `order’ for #提供错误的undefined method `order’ for # cities_controller.rb helper_method :sort_column, :sort_direction def show session[:search_radius] = 2 if session[:search_radius].blank? @city = City.find(params[:id]) @locations = @city.locations @hotels = [] @locations.each do |location| unless location.longitude.blank? || location.latitude.blank? center_point = [location.latitude, location.longitude] box = Geocoder::Calculations.bounding_box(center_point, session[:search_radius]) thotels = Hotel.near(center_point, session[:search_radius]).within_bounding_box(box) […]

散列/数组到活动记录

我一直在寻找,但我似乎无法在任何地方找到这个问题。 在Rails 5.0.0.beta3中,我需要使用关联和它的记录对我的@record = user.records进行排序。 排序就是这样的。 @record = @record.sort_by { |rec| If user.fav_record.find(rec.id) User.fav_record(rec.id).created_at Else rec.created_at End 这只是我所做的一个例子。 但一切都很好。 问题:这会返回一个数组,而不是一个Active Record Class。 我已经尝试了一切来让它返回一个Active Record Class。 我已经将已排序的元素推送到ID数组并尝试按顺序提取它们,我已经尝试过映射。 我获得的每个结果都将我之前的活动记录转换为数组或哈希。 现在我需要它回到活跃的记录。 有谁知道如何将该活动记录的数组或散列转换回Active Record类?

如何使用校正因子创建哈希差异?

我想比较一个数组中的哈希: h_array = [ {:name => “John”, :age => 23, :eye_color => “blue”}, {:name => “John”, :age => 22, :eye_color => “green”}, {:name => “John”, :age => 22, :eye_color => “black”} ] get_diff(h_array, correct_factor = 2) # should return [{:eye_color => “blue”}, {:eye_color => “green”}, {:eye_color => “black”}] get_diff(h_array, correct_factor = 3) # should return […]

通过哈希或数组更新

我想更新Period Model中的subject_id字段。期间循环将在Form中。 因此,当我提交表单时,传递的参数将作为哈希,其中Key是Period.id ,值是subject_id 。 那么,我该如何更新它。 在我的Show.html.erb中我有 我有SHOW的动作 def show @period = Period.all end 在我有的更新操作中 def update @period = params[:id] keys, values = @period.map { |k,v| [k.to_i, v.to_i] }.transpose values.each { |f| Period.all.update_all(:subject_id => f) } end 其中@period = params[:id]给出一个参数 #Parameters: {“utf8″=>”✓”, “authenticity_token”=>”8SNaUIQ6ZwjYOqBX07QYyVJsbuvYTL2TotSqIg0yj98nYXq5XqJ5XRHqlCvl1aw0lLg9vowyDOl3Hhm+hYDaOA==”, “id”=>{“1″=>”3”, “4”=>”2″}, “commit”=>”Save changes”} 其中哈希中的1和4是period_id 散列中的3和2是subject_id。 然后我将哈希转换为键和值 其中键是period_id 值是subject_id。 然后我循环使用值并更新Period。 它正在更新,但问题是只更新了最后一个值2,其中每个subject_id变为2,我不会发生3(第一个值)发生的情况,只更新最后一个值。 我只是敲打头来解决这个问题两天。 […]

将数组合并为哈希并使用重复项

如何保留重复并维护订单? 例如: keys = [1, 2, 1] values = [“a”, “b”, “c”] Hash[keys.zip(values)] # => {1=>”c”, 2=>”b”}

使用Hash #fetch优雅地处理错误的JSON

我正在尝试从这个JSON API中获取一些产品,所以我可以在我的视图中显示它们,使用Hash#fetch #fetch优雅地处理坏JSON,如果我得到nil,则声明一个默认值。 但为什么我得到: can’t convert String into Integer 或者如果我将@json_text设置为{} : undefined method ‘fetch’ for `nil:NilClass` 直播应用: http : //runnable.com/U-QEWAnEtDZTdI_g/gracefully-handle-bad-json class MainController < ApplicationController require 'hashie' def index @json_text = <<END { "products": [] } END hashes = JSON.parse(@json_text) mashes = Hashie::Mash.new(hashes) products = [] mashes.products.fetch('products', []).each do |mash| puts "YOLO" end end end

Ruby在哈希中组合元素

我有一个看起来像这样的: data = {abc -> [[date1, val1], [date2,val2]], def -> [[date1,val3], [date2,val4]]} 我想加入abc和def元素,所以就像这样: data = {join -> [[date1, val1+val3], [date2, val2+val4]] } 我该如何解决这个问题。 请注意,哈希中还有其他元素不应被修改。

从二维数组中提取并使用数组值创建哈希

我有一个二维数组 v = [ [“ab”,”12″], [“ab”,”31″], [“gh”,”54″] ] v的子arrays的第一个元素将具有重复元素,例如”ab” 。 我想创建一个散列,将键作为子数组的第一个元素,并将值作为v中相应第二个元素的数组。 请指教。 此外,我想要这个,h = {“ab”=> [“12”,“31”],“gh”=> [“54”]}然后我想返回h.values,这样数组[返回[“12”,“31”],[“54”]]