草庐IT

ruby-on-rails - 如果用户使用 Devise 登录,则隐藏链接

我想这样做,如果用户登录(使用Devise),导航栏中的“注册”按钮将被隐藏。我能够使用但我似乎无法编写隐藏按钮的代码。我知道还必须有一个else语句。 最佳答案 例子 关于ruby-on-rails-如果用户使用Devise登录,则隐藏链接,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/25252231/

如果在数组合并期间发现相似值,则拒绝或删除 Ruby 数组

如果存在相似值,如何删除较早的数组值?这是我使用的代码:defaddress_geoarr=[]arr给定以下值do='I're='am'me='a'fa='good'so='good'la='boy'上述方法会产生:Iamagoodgoodboy我应该如何编写数组合并以拒绝fa并只采用so来产生:Iamagoodboy非常感谢! 最佳答案 您可以使用Array#uniq>arr=['good','good']>arr.uniq=>['good']根据@tokland的建议,如果您只想删除连续的重复项,这会起作用(并支持ruby​​

ruby-on-rails - Ruby 中的异常处理 - 如果需要救援,则调用 begin

我有一个简单的异常处理blockbeginrescueend我想修改它,以便在救援时重新开始。尝试5次。如果仍然没有连接-从街区出来 最佳答案 您需要关键字retry。将其与MAX_RETRIES结合起来。即if(MAX_RETRIES-=1)>0重试 关于ruby-on-rails-Ruby中的异常处理-如果需要救援,则调用begin,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

ruby-on-rails - 通过永久链接查找项目,如果找不到则返回 404

我更改了我的显示Controller以通过永久链接而不是ID查找记录(为了SEO多汁)。defshow@project=Project.find_by_permalink(params[:id])end但是,如果我输入localhost:3000/projects/foo(并且没有带有foo永久链接的项目),我会收到500服务器错误而不是404未找到。这是为什么,我该如何解决? 最佳答案 这可能是2.3添加的内容,但您可以像这样在动态查找器之后使用感叹号:defshow@project=Project.find_by_permali

ruby-on-rails - 如果花费的时间超过 X 秒,则退出线程

我正在像这样使用Ruby线程:threads=[]forpageinpagesthreads假设我想杀死一分钟后仍在运行的所有线程。我该怎么做? 最佳答案 我通常使用Timeout使我的操作超时:require"timeout"Timeout.timeout(seconds)do...end也许this可以提供帮助,所以在您的情况下,我认为这样的事情应该可行:beginTimeout.timeout(5)doforpageinpagesthreads但是您确定您的Controller是执行此操作的最佳位置吗?他们在后台任务中不是更好

ruby - 如果对象存在则调用对象的方法

有没有更优雅的写法?@on_connection_callback.call()if@on_connection_callback它不得不引用@on_connection_callback两次,这让我很烦。 最佳答案 你可以这样写@on_connection_callback.call()rescuenil 关于ruby-如果对象存在则调用对象的方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

ruby - 如果超时则等待一个元素而不抛出异常

我知道Element#wait_until_present(t)方法,但如果此方法超时,它会抛出timeOut异常。是否有一种方法只等待t秒,然后在元素出现时返回true否则返回false?我知道这可以用一个简单的begin..rescue..end语句来完成,但我正在寻找不使用异常的东西。 最佳答案 你可以像这样写一个简写的rescue子句:element_present=browser.element.wait_until_presentrescuefalseputs"elementnotpresent"unlesselemen

ruby-on-rails - Hash#slice 类方法,如果给定键不存在则返回 nil

我在我的Rails环境中使用Hash#slice方法。slice方法的工作原理如下:{a:1,b:2,d:4}.slice(:a,:c,:d)=>{:a=>1,:d=>4}但是如果给定的键不存在,我想返回一个nil,像这样:{a:1,b:2,d:4}.slice(:a,:c,:d)=>{:a=>1,:c=>nil,:d=>4}这是我为函数写的,有没有更好的方法来写这个函数?hash={a:1,b:2,d:4}keys=[:a,:c,:d]keys_not_present=keys.map{|key|keyunlesshash.has_key?(key)}.compactkeys_not

ruby-on-rails - Rails 5. 如果设置了一个许可 key ,则不需要使用强参数

我正在使用Rails5创建一个JSONApi。我的Controller使用带有一个require属性的强参数,如下所示:params.require(:require_attribute).permit(:permit_attribute1,:permit_attribute2)通常我必须像这样发送我的JSON:{"require_attribute":{"permit_attribute1":"data","permit_attribute2":"data"}}如果缺少必需的属性,我必须收到此消息:"ActionController::ParameterMissing:paramis

ruby - 如果不存在则追加字符串

我有来自第三方的时间字符串(多么诗意),有些有时区,有些则没有。如果时区不存在,我想做的是附加一个时区。以下是带有时区的字符串示例...5:21AMMT10:01PMMT8:41PMMT但有时MT会因为某种原因而丢失。因此,我需要做的是在AM或PM之后追加MT(如果它丢失了)。(注意,我不能只检查MT。它可以是任何时区。这里的主要目标是能够在AM之后附加我选择的任何时区或PM)。 最佳答案 我不喜欢这些,所以我决定只chomp如果存在则将其关闭,然后再次添加。在你的情况下:"#{time.chomp('MT')}MT"编辑:这实际上