合并嵌套属性

我有一个使用post,评论和作者模型的样本。 请从以下主题中查看我的完整要求 嵌套路由和CRUD操作以及Rails中的附加值 在这里,我需要在创建post时创建一个注释。 我使用嵌套属性并且工作正常。 但我的问题是我不想要用户的所有属性。 某些属性需要在内部添加。 如果属性没有嵌套属性,我可以合并。 但是合并不适用于嵌套属性。 我从这里得到了解决方案 现在我的params方法如下所示; private def create_params filtered_params = params.require(:post) .permit([:name, :description, comments_attributes: [:author_id, :comments]]) additional_params = {record_status: 1, comments_attributes: [record_status: 1]} result = filtered_params.merge(additional_params) do |key, oldval, newval| if newval.is_a? Array oldval ||= {} Hash[oldval.map {|k, v| [k, v.merge(newval.first)]}] elsif newval.is_a? Hash oldval ||= {} oldval.merge newval […]

Rails – 检查记录是否已更新

我正在尝试检查记录是否已更新/编辑,如果已更新/编辑,则应显示已编辑的记录。 这是我的if语句: (edited) 虽然它不起作用。 更新评论时,不会显示(edited)文本。 我需要在if语句中添加什么来检查评论记录是否已更新?

字符串到哈希转换

我怎么能把字符串转换为哈希? 现在我使用: eval “{‘1627207:28320’=>’text’}” => {‘1627207:28320’=>’text’} 但“eval”对我的情况不利 – 从params传递的字符串,这种情况并不安全 编辑: 传递字符串也可以是: “{‘1627207’=>’text’, ’11:167:28320’=>’text 1 / text 2 / unicode=>привет!’}” 然后需要结果哈希: {‘1627207:28320’=>’text’, ’11:167:28320’=>’text 1 / text 2 / unicode=>привет!’}

清理视图ruby逻辑并将关注点分离到模型/控制器中

我想在我的主页上显示我的数据库中随机分类的6个工具。 我创建了一个带有主页操作的Pages控制器。 这是我的Pages控制器: class PagesController < ApplicationController def home @tools = Tool.all end end 然后在我的home.html.erb视图中,我使用.sample方法从我的数据库中抓取随机工具(我使用tool1,tool2,tool3等为每个变量重复6次): 我想知道是否有更好的方法来做到这一点。 在我看来,我似乎有逻辑,必须有办法将逻辑转移到其他地方? 我的模型,控制器等等。如何清理这些代码,以便它是好的rails代码? 或许这是很好的rails代码,我只是不知道它,因为我是一个初学者。

在获取网页时,如何捕获Ruby中的“处理时出错:缓冲区错误”?

我正在使用Rails 4.2.7和此代码通过SOCKS代理获取网页… begin … res1 = Net::HTTP.SOCKSProxy(‘127.0.0.1’, 50001).start(uri.host, uri.port) do |http| puts “launching #{uri}” resp = http.get(uri) status = resp.code content = resp.body content_type = resp[‘content-type’] content_encoding = resp[‘content-encoding’] end … rescue OpenURI::HTTPError => ex … rescue SocketError, Net::OpenTimeout => e … 偶尔,我在“rest = http.get(uri)”行上收到错误 Error during processing: buffer error /Users/mikeb/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/response.rb:364:in `finish’ /Users/mikeb/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/response.rb:364:in `finish’ /Users/mikeb/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/response.rb:266:in […]

为什么我得到Zlib :: DataError?

我发布到我无法控制的远程服务器。 正在通过的参数肯定是问题的一个因素,但我很难弄清楚它为什么会失败。 看起来没有足够大的变化来创建错误。 我从未直接处理zlib压缩。 有没有办法获得更好的错误输出? 例: 通过: {“email” => “a@bc.com”} 这失败了: {“email” => “a@bd.com”} Ruby 2.2 / Rails 4 错误: # # “invalid block type” [ 0] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:377:in `inflate'”, [ 1] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:377:in `block in inflate_adapter'”, [ 2] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:411:in `call_block'”, [ 3] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:402:in `<<'", [ 4] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:106:in `read'", [ 5] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:399:in `read'", [ 6] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:317:in `read_chunked'", […]

如何从文本中删除url?

我想帮助解析Ruby中的文本。 鉴于: @BreakingNews:台风莫拉克击中台湾,中国疏散数千人http://news.bnonews.com/u4z3 我想删除所有的超链接,返回纯文本。 @BreakingNews: Typhoon Morakot hits Taiwan, China evacuates thousands

如何使用ruby将图像文件转换为字节数组

我需要将图像作为字节数组传递给.NET SOAP Web服务。 任何人都可以举例说明如何使用ruby将上传的图像文件转换为字节数组?

SyntaxError:(irb):26:既给出块arg又给出实际块

我有这个问题 = f.select(:city, Country.where(:country_code => “es”).collect(&:cities) {|p| [ p.city, p.id ] }, {:include_blank => ‘Choose your city’}) 问题是我收到以下错误 SyntaxError: (irb):26: both block arg and actual block given 从我看到我做错了包括collect(&:cities)然后声明块。 有没有办法可以用同样的查询完成两个?

如何使用ruby的net / telnet读取整行?

我正在使用ruby中的net / telnet库来从服务器读取数据。 它在最后用换行符发送整行命令,所以我想我会这样做: connection = Net::Telnet.new(options) connection.waitfor(/\n/) do |txt| process txt end 这不起作用,因为它一次性向我发送了一大堆行。 我可以通过以下方式轻松解决这个问题: connection.waitfor(/\n/) do |txt| txt.split(“\n”).each do |line| process line end end 除了这个问题之外:我发送的字符串几乎总是包含半个命令。 即:如果服务器发送此: COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 option1 option2 option3 我经常会这样: COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 opt 然后我将在下一次阅读中获得COMMAND3的其余选项以及COMMAND4。 有什么方法可以让net / telnet发送给我的换行符分隔的文本? 还是另一种解决方法? […]