标签: ruby

如何将参数传递给define_method?

我想将一个参数传递给使用define_method定义的方法,我该怎么做?

ruby metaprogramming

151
推荐指数
4
解决办法
6万
查看次数

数组包含来自另一个数组的任何值?

如果数组包含来自第二个数组的任何元素,那么测试最好,最优雅/最有效的方法是什么?

以下两个例子,试图回答这个问题,"食物"包含来自'奶酪'的任何元素:

cheeses = %w(chedder stilton brie mozzarella feta haloumi reblochon)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)

puts cheeses.collect{|c| foods.include?(c)}.include?(true)

puts (cheeses - foods).size < cheeses.size
Run Code Online (Sandbox Code Playgroud)

ruby arrays

151
推荐指数
3
解决办法
5万
查看次数

如果条件在Haml中为真,则追加类

如果 post.published?

.post
  / Post stuff
Run Code Online (Sandbox Code Playgroud)

除此以外

.post.gray
  / Post stuff
Run Code Online (Sandbox Code Playgroud)

我用rails helper实现了它,看起来很难看.

= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
  / Post stuff
Run Code Online (Sandbox Code Playgroud)

第二种变体:

= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
  / Post stuff
Run Code Online (Sandbox Code Playgroud)

是否有更简单和特定于haml的方式?

UPD.特定于Haml,但仍然不简单:

%div{:class => "post" + (" gray" unless post.published?).to_s}
  / Post stuff
Run Code Online (Sandbox Code Playgroud)

ruby haml

150
推荐指数
5
解决办法
7万
查看次数

将字符串插入正则表达式

我需要将字符串的值替换为Ruby中的正则表达式.是否有捷径可寻?例如:

foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0" 
if goo =~ /value of foo here dynamically/
  puts "success!"
end
Run Code Online (Sandbox Code Playgroud)

ruby regex

149
推荐指数
4
解决办法
4万
查看次数

149
推荐指数
4
解决办法
4万
查看次数

如何防止Rails中的浏览器页面缓存

Ubuntu - > Apache - > Phusion Passenger - > Rails 2.3

我网站的主要部分会对您的点击做出反应.因此,如果您点击链接,它会将您发送到目的地,并立即重新生成您的页面.

但是,如果您点击后退按钮,则看不到新页面.不幸的是,如果没有手动刷新,它就不会出现; 看来浏览器正在缓存它.我想确保浏览器不缓存页面.

另外,我确实想为所有静态资产设置远期到期日期.

解决这个问题的最佳方法是什么?我应该在Rails中解决这个问题吗?Apache的?JavaScript的?

谢谢你的帮助,杰森


唉.这些建议都没有强迫我正在寻找的行为.

也许有一个JavaScript的答案?我可以让rails在注释中写出时间戳,然后让javascript检查以查看时间是否在五秒钟内(或者无论什么工作).如果是,那么很好,但如果没有,那么重新加载页面?

你认为这会有用吗?

感谢你的帮助,

贾森

ruby apache caching ruby-on-rails http-headers

149
推荐指数
2
解决办法
6万
查看次数

在Ruby中显式返回是不错的风格?

来自Python背景,在风格方面总是有"正确的方法"("Pythonic"方式),我想知道Ruby是否存在相同的情况.我一直在使用自己的风格指南,但我正在考虑发布我的源代码,并且我希望它遵守可能存在的任何不成文的规则.

return在方法中明确键入是"Ruby方式" 吗?我已经看到它有没有完成,但有没有正确的方法呢?是否有合适的时机去做?例如:

def some_func(arg1, arg2, etc)
  # Do some stuff...
  return value # <-- Is the 'return' needed here?
end
Run Code Online (Sandbox Code Playgroud)

ruby coding-style return-value

149
推荐指数
5
解决办法
7万
查看次数

Ruby on Rails:如何将字符串呈现为HTML?

我有

@str = "<b>Hi</b>"
Run Code Online (Sandbox Code Playgroud)

在我的观点中:

<%= @str %>
Run Code Online (Sandbox Code Playgroud)

页面上显示的内容是:<b>Hi</b>当我真正想要的是.将字符串"解释"为HTML标记的红宝石方法是什么?


编辑:案例在哪里

@str = "<span class=\"classname\">hello</span>"
Run Code Online (Sandbox Code Playgroud)

如果在我看来我做

<%raw @str %>
Run Code Online (Sandbox Code Playgroud)

HTML源代码是<span class=\"classname\">hello</span>我真正想要的是什么<span class="classname">hello</span>(没有反斜杠转义双引号).什么是"unes​​cape"那些双引号的最佳方式?

html ruby string ruby-on-rails

149
推荐指数
6
解决办法
16万
查看次数

在Ruby中构建字符串时,为什么铲运算符(<<)比plus-equals(+ =)更受欢迎?

我正在研究Ruby Koans.

about_strings.rb中test_the_shovel_operator_modifies_the_original_stringKoan 包含以下注释:

在构建字符串时,Ruby程序员倾向于使用铲运算符(<<)而不是正等运算符(+ =).为什么?

我的猜测是它涉及速度,但我不明白引擎盖下的动作会导致铲子操作员更快.

有人能够解释这个偏好背后的细节吗?

ruby string optimization

149
推荐指数
6
解决办法
3万
查看次数

CocoaPods在macOS High Sierra中不起作用

升级到macOS后,高级Sierra CocoaPods无效.虽然很容易摆脱CocoaPods,但遗憾的是现在还不在范围内.错误消息如下.

zsh: /Users/****/.gems/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin: no such file or directory
Run Code Online (Sandbox Code Playgroud)

我意识到错误源于Ruby升级但是什么是容易修复的?试图让CocoaPods使用新的ruby版本会产生其他错误.

编辑:现在我安装Ruby 2.0rvm install 2.0.0rvm use 2.0.0,然后重新安装的CocoaPods sudo gem install cocoapods.似乎现在正在工作.

ruby cocoapods macos-high-sierra

149
推荐指数
11
解决办法
4万
查看次数