如何使用Ruby on Rails将数据从控制器传递到模型?

如何将数据从控制器传递到模型? 在我的application_controller我获取用户的位置(州和城市)并包含一个before_filter ,以便通过所有控制器访问它 before_filter :community def community @city = request.location.city @state = request.location.state @community = @city+@state end 然后我尝试通过以下方法将控制器中检索到的数据添加到模型中: before_save :add_community def add_community self.community = @community end 但是,数据从未从控制器传递到模型。 如果我使用: def add_community @city = request.location.city @state = request.location.state @community = @city+@state self.community = @community end request.location.city和request.location.state方法不能从模型中运行。 我知道其他一切都有效,因为如果我将@city和@state定义为字符串,在def_community下,那么一切正常,除了我没有动态变量,只是放在模型中的字符串。 此外,我知道请求在控制器/视图中工作,因为我可以让它们显示正确的动态信息。 问题只是将数据从控制器传递到模型。 非常感谢你的时间。

RVM和Jenkins设置

我是Jenkins CI的新手。 我在我的远程Jenkins中安装RVM,当我执行下面的shell时。 #!/bin/bash -x source ~/.bashrc rvm use 1.9.3@rails-3.2.3 我得到以下错误。 + source /var/lib/jenkins/.bashrc ++ PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/lib/jenkins/.rvm/bin:/var/lib/jenkins/.rvm/bin + rvm use 1.9.3@rails-3.2.3 RVM is not a function, selecting rubies with ‘rvm use …’ will not work. You need to change your terminal settings to allow shell login. Please visit https://rvm.io/workflow/screen/ for example. 这是什么意思? 我什么都不知道。 请帮我。 更新:我尝试下面的脚本但我仍然得到错误: #!/bin/bash […]

如何获取BasicObject实例的类?

我有一个脚本,使用ObjectSpace#each_object迭代,没有args。 然后它打印每个类存在多少个实例。 我意识到有些类重新定义了#class实例方法,所以我必须找到另一种方法来获得实际的类; 假设它存储在变量”klass” ,而klass === object为true。 在Ruby 1.8中,我可以这样做,假设Object没有被monkeypatched: Object.instance_method(:class).bind(object).call 这适用于ActiveSupport::Duration实例: # Ruby 1.8 # (tries to trick us) 20.seconds.class => Fixnum # don’t try to trick us, we can tell Object.instance_method(:class).bind(20.seconds).call => ActiveSupport::Duration 但是,在Ruby 1.9中,这不再起作用: # Ruby 1.9 # we are not smart… Object.instance_method(:class).bind(20.seconds).call TypeError: bind argument must be an instance of Object from […]

在`require’:没有这样的文件加载 – iconv(LoadError)

➜ expertiza git:(master) ✗ ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.1.0] ➜ expertiza git:(master) ✗ rails -v Rails 2.3.14 ➜ expertiza git:(master) ✗ script/server /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/inflector.rb:3:in `require’: no such file to load — iconv (LoadError) from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/inflector.rb:3 from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext/integer/inflections.rb:1:in `require’ from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext/integer/inflections.rb:1 from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext/integer.rb:2:in `require’ from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext/integer.rb:2 from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext.rb:8:in `require’ from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext.rb:8 from /Users/HPV/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.14/lib/active_support/core_ext.rb:8:in `each’ […]

Ruby触发器什么时候有用?

我想通过教程我理解触发器是如何工作的,但是这个例子只是为了教学而设计的。 谁能举例说明你如何实际使用或使用触发器? 我正在寻找一个真实的应用程序,而不仅仅是另一个演示。 这个工具可以解决什么问题? 以前的链接是http://vision-media.ca/resources/ruby/ruby-flip-flop-or-range-operators ,但这些天似乎是垃圾邮件。

带有重复键的Ruby Hash?

是否可以在Ruby中创建允许重复键的哈希? 我在Ruby 1.9.2工作。

如何使用Ruby下载图片?

我想用Ruby下载这张图片。 我怎么做? http://sofzh.miximages.com/ruby/218926700_ecedc5fef7_o.jpg 我正在使用Mac OS。

How do you say事情发生在“x分钟前”或“x小时前”或“x天前”在Ruby?

如果我在Ruby中有一个时间变量,我怎么能说它引用了一个发生以下事件之一的事件: “x分钟前”或“x小时前”或“x天前” 显然,如果2天前发生了什么事情,我不想说它在几分钟之前就已经发生了。

如何使用CryptoJS AES解密消息。 我有一个有效的Ruby示例

我可以用Ruby解密AES加密消息,如下所示: require ‘openssl’ require ‘base64’ data = “IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg=” key = “2e35f242a46d67eeb74aabc37d5e5d05” aes = OpenSSL::Cipher::Cipher.new(‘aes-128-cbc’) aes.decrypt aes.key = key.scan(/../).collect{ |x| x.hex }.pack(‘c*’) aes.iv = Base64.decode64(data)[0…16] puts aes.update(Base64.decode64(data)[16..-1]) + aes.final # => JSON data… 作为CryptoJS的新手,我没有把工作替代方案放在一起。 这是我到目前为止所做的: data = “IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg=”; key = “2e35f242a46d67eeb74aabc37d5e5d05”; CryptoJS.AES.decrypt(atob(data).substring(16), key, { iv: atob(cipher).substring(0, 16), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); CryptoJS是否以某种不同的方式期望数据,密钥和初始化向量? 据我所知,IV是数据中的前16个字节。

Rails引擎扩展function

我有一个引擎定义了一些模型和控制器。 我希望能够在我的应用程序中扩展某些模型/控制器的function(例如添加方法),而不会从引擎中丢失原始模型/控制器function。 在我读到的任何地方,您只需要在应用程序中定义具有相同名称的控制器,Rails将自动合并它们,但它对我不起作用,引擎中的控制器被简单地忽略(我不认为它甚至被加载)。