Tag: 集合

RoR – 来自数组的collection_select

我有点阵: @dates= [‘2013-11-01’, ‘2013-11-02’, ‘2013-11-03’, ‘2013-11-04’, ‘2013-11-05’] 我怎样才能将这些数组放在视图中的collection_select中? 我试过了: … …

如何嵌套收集路线?

我在Rails 3应用程序中使用以下路由配置。 # config/routes.rb MyApp::Application.routes.draw do resources :products do get ‘statistics’, on: :collection, controller: “statistics”, action: “index” end end StatisticController有两个简单的方法: # app/controllers/statistics_controller.rb class StatisticsController < ApplicationController def index @statistics = Statistic.chronologic render json: @statistics end def latest @statistic = Statistic.latest render json: @statistic end end 这将生成由StatisticsController成功处理的URL /products/statistics 。 如何定义导致以下URL的路由: /products/statistics/latest ? 可选:我尝试将工作定义置于关注点但它失败并显示错误消息: undefined method ‘concern’ […]

collection_select给出了ActiveRecord :: AssociationTypeMismatch

我不确定我是否正确地提出这个问题,或者我太累了,因为它显而易见。 我的代码是: _form.html.haml = f.collection_select :category, Category.where(:user_id => current_user.id), :id, :name 我得到的是 ActiveRecord::AssociationTypeMismatch in LinksController#create Category(#70203963939880) expected, got String(#70203929255820) 记录是 Started POST “/links” for 127.0.0.1 at 2012-11-12 22:14:05 -0800 Processing by LinksController#create as HTML Parameters: {“utf8″=>”✓”, “authenticity_token”=>”z4RYcUW3hGLfKBAwQLMZbye2I1mn16fg6BSBGe7GILU=”, “link”=>{“name”=>”SFGate”, “url”=>”http://www.sfgate.com/”, “category”=>”1”}, “commit”=>”Save”} Completed 500 Internal Server Error in 0ms 它似乎传递:id作为字符串而不是整数。 有什么线索吗? 更新: class Category < ActiveRecord::Base […]

Rails:一次保存更新记录的集合

据我了解, build方法可用于在保存之前建立关联记录的集合。 然后,当调用save ,将validation并保存所有子记录,如果存在validation错误,则父记录将出现反映此错误的错误。 第一个问题是,这是正确的吗? 但我的主要问题是,假设上述内容有效,是否可以对更新执行相同的操作,而不是创建? 换句话说,是否有一种方法可以更新与父记录关联的集合中的多个记录,然后保存父记录并立即进行所有更新(如果子级中存在validation错误,则会在父级中出现错误) )? 编辑:总而言之,我想知道正确的方法来处理父记录和几个相关子记录需要一次更新和保存的情况,任何错误都会中止整个保存过程。

从has_many中删除对象但不删除Rails中的原始记录?

我有这个: Post.paragraphs << new_paragraph 我需要删除id = 3的段落,因此以下内容将完全删除记录: Post.paragraphs.find(paragraph_id).destroy # or Post.paragraphs.find(paragraph_id).delete 我只需要从has_many关联中删除一个段落。 我试图使用delete和destroy 。 两种方法都完全删除关联表中的记录。 我怎样才能将它们从“容器”中删除?

Rails4动态选择下拉列表

我正在尝试使用form_tag在搜索表单中设置一些动态下拉选择菜单。 我想要的是与Railcasts#88中的示例类似的function 楷模: class Count < ActiveRecord::Base belongs_to :host end class Host < ActiveRecord::Base belongs_to :site has_many :counts end class Site < ActiveRecord::Base belongs_to :state has_many :hosts end class State < ActiveRecord::Base has_many :sites end 视图: “get”, id: “search-form”) do %> 一个州拥有多个拥有许多计数的主机的网站。 或者相反,Counts belongs_to Host thats属于哪个属于State的Site 所以我想从州下拉列表中选择一个状态,然后根据他们通过主机关联的状态“分组”站点。 我一直在努力与这个嵌套关联,似乎无法弄清楚如何构建groups_collection_select。 我知道我忽略了一些明显的东西! 可以肯定使用一些指针……

散列数组中特定键的不同出现次数

我有一个这样的数组: array = [{“id”=>”id1”, “email”=>”name@organization.com”, “sess”=>”sess1”}, {“id”=>”id2”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id3”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id4”, “email”=>”name@organization.com”, “sess”=>”sess3”}, {“id”=>”id5”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id6”, “email”=>”name@organization.com”, “sess”=>”sess3”}, {“id”=>”id7”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id8”, “email”=>”name@organization.com”, “sess”=>”sess5”}, {“id”=>”id9”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id10”, “email”=>”name@organization.com”, “sess”=>”sess2”},] 我怎么能以简洁的方式做一些能够不经重复地返回所有不同出现的“sess”的东西?: [“sess1”, “sess2”, “sess3”, “sess5”] 我已经开始编写一个循环来迭代所有元素,并在每次“sess”值已经存在的情况下构建一个新的哈希检查,但我确信在Ruby中必须有更好的方法。

如何在Ruby中的哈希列表中为每个键提取更大的值

我可以想象有一种简单的方法可以做到这一点而不是使用许多变量和状态。 我只想获得散列列表中每个键的最高值 例如: [{1=>19.4}, {1=>12.4}, {2=>29.4}, {3=>12.4}, {2=>39.4}, {2=>59.4}] 结果 [{1=>19.4}, {3=>12.4}, {2=>59.4}]

带有rubycollections品/枚举的酷技巧和富有表现力的片段

你最喜欢的ruby系列代码片段是什么? 优选地,它们应该是您的发现,具有表现力,可读性,并在您的编码实践中引入一些乐趣。 数组中的模式匹配(用于局部变量和参数): (a, b), c = [[:a, :b], :c] [a,b,c] => [:a, :b, :c] (a,), = [[:a]] a => :a 从非数组分配到多个变量: abc, a, b =* “abc”.match(/(a)(b)./) => [“abc”, “a”, “b”] nil1, =* “abc”.match(/xyz/) => [] 使用相同的表达式初始化数组元素: 5.times.map { 1 } => [1,1,1,1] Array.new(5) { 1 } => [1,1,1,1,1] 使用相同的值初始化数组: [2]*5 =>[2,2,2,2,2] Array.new 5, 2 […]