Rails表单:使用AJAX基于其他collection_select值更新collection_select选项

我刚刚开始学习Rails,并且我与内置工具,Javascript和AJAX相处得很好但是对我来说是非常新的。 这是问题所在: 我有一张订单。 每个订单都属于一个联系人,可以有不同的账单和送货地址。 collection_select框用于设置这些值。 如果我不介意必要的页面重新加载以减少可用的地址选项(这应该仅限于属于所选联系人的地址),所有这些都可以正常工作。 在没有页面重新加载的情况下,使这项工作最简单,最容易维护的选项是什么? 这就是我在卡住之前尝试将表单变形的问题。 让我们从views / orders / edit.html.erb的摘录开始: … … 我省略了送货地址选择框,因为它与开票下拉列表相同。 我们暂时只关注它。 这是controllers / orders_controller.rb中的更新操作: def update @order = Order.find(params[:id]) respond_to do |format| if @order.update_attributes(order_params) format.html { redirect_to edit_order_path, notice: “Auftrag aktualisiert.” } format.json { render json: @order } format.js else render ‘edit’ end end end 我尝试查看联系人选择框以进行更改,以便立即保存,希望地址选择也会立即反映这些更改。 此观察者位于assets / javascript […]

Rails 3.1:Ruby成语,以防止.each抛出exception,如果为nil?

有没有办法使用.each所以如果对象为零或空(如果没有添加额外的空/空白测试,它不会抛出错误? 似乎如果我说phonelist.each do |phone| 如果phonelist为空,则不应执行该块。 但在我看来(haml)我有- @myvar.phonelist.each do |phone| 如果phonelist为空,则抛出NoMethodError。 我遇到了很多,总是通过为.blank添加显式检查/分支来解决这个问题? 但似乎应该有一种更简单的方法来告诉。每个空手段什么都不做。

我如何测试(rspec)一个需要太长时间的http请求?

如果rspec请求时间太长,我该如何测试行为? 我正在考虑使用线程来模拟这个: describe “Test” do it “should timeout if the request takes too long” do lambda { thread1 = Thread.new { #net::http request to google.com } thread2 = Thread.new { sleep(xx seconds) } thread1.join thread2.join }.should raise_error end end 我想确保在首次提出请求之后,另一个线程“开始”,在这种情况下,它只是一个hibernatexx秒。 然后我应该期望请求超时,因为执行时间太长 我认为有更好的方法来做到这一点。 鉴于我要求的url不相关。 我只是想测试一下,如果执行时间太长,它确实会超时。 我可以使用stub(),expect()或任何rspecfunction来模拟这个吗? 有没有什么方法可以将’块’传递给存根方法 http_request_to_google.stub(:connection).executethisblock(sleep for xx seconds) .and_throw error ? 任何帮助表示赞赏

您没有写入/var/lib/gems/1.9.1目录的权限

对于我尝试安装的所有gem,我收到此错误: 错误:执行gem时…(Gem :: FilePermissionError)您没有对/var/lib/gems/1.9.1目录的写权限。 OBS。 我在Ubuntu 14上运行。

如何从可能具有前导零的字符串中解析数字?

在ruby中,我使用以下格式解析日期:24092008.我想将每个部分(年,月,日)转换为数字。 我使用正则表达式将它们拆分,它产生三个字符串,我将它传递给Integer构造函数。 date =~ /^([\d]{2})([\d]{2})([\d]{4})/ year = Integer($3) month = Integer($2) day = Integer($1) 当它达到月线时,崩溃如下: `Integer’: invalid value for Integer: “09” (ArgumentError) 我花了一段时间才意识到它正在解释前导零,因为Octal和09不是有效的八进制数(它与“07”一起工作正常)。 有没有一个优雅的解决方案,或者我应该测试小于10的数字并首先删除零? 谢谢。

如何处理Active Admin资源中的序列化编辑字段?

我有一个模型, Domain ,它有一个文本字段, names 。 > rails g model Domain names:text invoke active_record create db/migrate/20111117233221_create_domains.rb create app/models/domain.rb > rake db:migrate == CreateDomains: migrating ================================================== — create_table(:domains) -> 0.0015s == CreateDomains: migrated (0.0066s) ========================================= 我将此字段序列化为模型中的数组。 # app/models/domain.rb class Domain < ActiveRecord::Base serialize :names, Array end 为此模型创建ActiveAdmin资源 > rails g active_admin:resource Domain create app/admin/domains.rb 然后,在app / admin […]

如何在Ruby中以hex执行Triple DES计算?

我正在尝试在Ruby中进行一些三重DES加密。 我正在尝试复制此页面的结果: http : //da.nmilne.com/des.html 我试图在Ruby中复制这些结果。 我怀疑问题是密钥应该是一个字符串,但我需要传入hex密钥。 要么加密的字符串格式错误。 或者两者都有。 🙂 require ‘openssl’ des = OpenSSL::Cipher::Cipher.new(“des-ede-cbc”) des.encrypt des.key=”23232323232323234545454545454545″ des.update(“0000000000000000”) res=des.final res.unpack(‘H*’) => [“5045c5d37ca4d13b”] 但它应该是: => [“3a42d7a1d1c60c40”] 关于我出错的地方的任何指示? 这里记录了不同的3DES算法: http : //www.openssl.org/docs/apps/enc.html 编辑清晰

如何在Ruby中计算String的宽度?

String.length只会告诉我String中有多少个字符。 (实际上,在Ruby 1.9之前,它只会告诉我有多少字节,这些字节的用处更少。) 我真的希望能够找出一个字符串的’en’宽度。 例如: ‘foo’.width # => 3 ‘moo’.width # => 3.5 # m’s, w’s, etc. are wide ‘foi’.width # => 2.5 # i’s, j’s, etc. are narrow ‘foo bar’.width # => 6.25 # spaces are very narrow 如果我能得到String的第一个n en,那就更好了: ‘foo'[0, 2.en] # => “fo” ‘filial'[0, 3.en] # => “fili” ‘foo bar baz'[0, 4.5en] […]

Ruby Gem开发 – 如何使用ActiveRecord?

我正在尝试开发我的第一颗rubygem而且我已经卡住了。 我使用“bundle gem”命令来创建基本结构并阅读一些教程,但我找不到的是如何集成ActiveRecord。 我在哪里创建迁移? 我是否在lib文件夹或根目录中创建“db / migrations”文件夹? 我是否必须在Rakefile中做任何事情(我发现了一些问题,答案是“你必须创建自己的[my_gem]:db:migrate”或类似的东西。) 我需要的只是一种创建gem的方法,它定义了ActiveRecord模型(当然包括迁移),然后可以由rails应用程序使用。 任何有关那个的帮助将不胜感激! 问候,弗洛

黄瓜嵌入截图不链接到屏幕截图

来自Cukes Google Group的交叉发布: 我已经尝试了许多保存屏幕截图的方法,但确定了内置于watir-webdriver的方法。 无论我使用哪种方法,我都无法在Cucumber HTML报告中成功嵌入此图像的链接。 在c:\ ruby​​ \ cucumber \ project_name \ features \ support \ hooks.rb中,我正在使用: After do |scenario| if scenario.failed? @browser.driver.save_screenshot(“screenshot.png”) embed(“screenshot.png”, “image/png”) end end 带有文本“屏幕截图”的链接添加到报表中,但URL是项目目录路径(“c:\ruby\cucumber\project_name”)而不是文件的直接链接(“c:\ruby\cucumber\project_name\screenshot.png”) 。 我尝试了许多不同的图像格式和使用Dir.pwd的直接路径,每次都有相同的结果。 我错过了什么? 谢谢 Windows XP Ruby 1.8.7 watir-webdriver(0.2.4)黄瓜(0.10.3)