Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在字符串前加两次前缀_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails在字符串前加两次前缀

Ruby on rails Rails在字符串前加两次前缀,ruby-on-rails,ruby,Ruby On Rails,Ruby,使用Rails 4.2。我有以下资料: field = ["can't be blank", "is invalid"] def error_message_for(field) if field.present? if field.size > 1 field.last.prepend("and/or ") end field.join(", ") end end error_message_for(field) 我希望输出为不能为空,和

使用Rails 4.2。我有以下资料:

field = ["can't be blank", "is invalid"]

def error_message_for(field)
  if field.present?
    if field.size > 1
      field.last.prepend("and/or ")
    end
    field.join(", ")
  end
end

error_message_for(field)
我希望输出为
不能为空,和/或无效
,但它的
不能为空,和/或无效
。您会看到
和/或
出现两次


怎么了

我觉得没问题。您确定您没有运行旧的缓存版本(尝试重新启动rails服务器),或者没有安装任何奇怪的monkey补丁吗

也就是说,我认为您试图在Rails中以一种更简单的方式实现的目标是可行的:看看

这可以简化为:

field.to_sentence(last_word_connector: ' and/or ')

我觉得没问题。您确定您没有运行旧的缓存版本(尝试重新启动rails服务器),或者没有安装任何奇怪的monkey补丁吗

也就是说,我认为您试图在Rails中以一种更简单的方式实现的目标是可行的:看看

这可以简化为:

field.to_sentence(last_word_connector: ' and/or ')
对字符串进行变异。也就是说,对它的调用不是幂等的。使用克隆版本的
字段
数组:

def error_message_for(field)
  field = field.map(&:dup) # HERE
  if field.present?
    if field.size > 1
      field.last.prepend("and/or ")
    end
    field.join(", ")
  end
end
对字符串进行变异。也就是说,对它的调用不是幂等的。使用克隆版本的
字段
数组:

def error_message_for(field)
  field = field.map(&:dup) # HERE
  if field.present?
    if field.size > 1
      field.last.prepend("and/or ")
    end
    field.join(", ")
  end
end

字段有什么问题。加入(“和/或”)
@mudasobwa:大概是这样,你可以有一个像“a,b和/或c”这样的句子。请参阅我关于使用
to_句的回答
field.join(“和/或”)
@mudasobwa:大概是这样,你可以有一个像“a,b和/或c”这样的句子。请参阅我关于使用
to_句子的回答。这应该行得通,但我得到的
不能为空,而且是无效的
@Victor:你说得对。看起来,
last\u words\u connector
用于3+元素数组,而
two\u words\u connector
用于2个元素数组。它就在文档中,但我以前从未注意到!应该可以同时指定两个参数。TIL。这应该行得通,但我得到的
不能为空,而且是无效的
@Victor:你说得对。看起来,
last\u words\u connector
用于3+元素数组,而
two\u words\u connector
用于2个元素数组。它就在文档中,但我以前从未注意到!应该可以同时指定两个参数。