小编meg*_*gas的帖子

Ruby范围变量

这是代码:

class Something
   attr_accessor :x
   def initialize(x)
      @x = x
   end
   def get_x
      x
   end
end

something = Something.new(5)
something.get_x # => 5
Run Code Online (Sandbox Code Playgroud)

如果x只是get_x方法中的局部变量,为什么解释器返回5 ?谢谢

ruby

1
推荐指数
1
解决办法
661
查看次数

为什么Nokogiri会删除内容?

我有这样的内容:

<div class="CodeRay">
  <div class="code"><pre>puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">Hello, world!</span><span style="color:#710">&quot;</span></span></pre></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想使用Nokogiri将其添加到HTML文档中:

File.open("frame2.html", "r") do |file|
  doc = Nokogiri::HTML.parse(file)
end
doc.at_css("body") = content # this is my content 
puts doc.to_html
Run Code Online (Sandbox Code Playgroud)

然后内容转换为:

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;puts &lt;span style="background-color:#fff0f0;color:#D20"&gt;&lt;span style="color:#710"&gt;&amp;quot;&lt;/span&gt;&lt;span style=""&gt;Hello, world!&lt;/span&gt;&lt;span style="color:#710"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
Run Code Online (Sandbox Code Playgroud)

HTML文件的另一部分是OK.问题是为什么Nokogiri剥离内容?为什么要将其转换为HTML实体?

html ruby nokogiri

1
推荐指数
1
解决办法
731
查看次数

为什么我们应该使用dup方法?

在许多ruby项目甚至ruby本身我都遇到过使用dup方法.例如,在某些项目中我遇到了这种结构:

class Array
  def flush
    self.dup.tap { self.clear }
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是为什么我们应该使用dup方法,即创建对象的副本而不是只使用相同的对象?谢谢

ruby

1
推荐指数
1
解决办法
3425
查看次数

Rails本地化语法

我已将Twitter Bootstrap安装到我的项目中,并为我找到了未知的语法:

<%=t '.title', :default => model_class.model_name.human.pluralize %>
<%= link_to t('.new', :default => t("helpers.links.new")),
            new_article_path,
            :class => 'btn btn-primary' %>
Run Code Online (Sandbox Code Playgroud)

我无法理解的含义'.title','.new''helpers.links.new'.这些结构如何与语言环境字典交互?

另外,我从来没有遇到过方法的构造,我可以:default =>t哪里阅读它?

localization ruby-on-rails-3

1
推荐指数
1
解决办法
770
查看次数

将get参数添加到辅助方法

我在config/routes.rb文件中添加了以下行:

get '/movies/similar', :contoller => 'movies', :action => 'similar'
Run Code Online (Sandbox Code Playgroud)

我看到有一个带名字的辅助方法'movies_similar_path'.我想添加一个'movies_similar_path'名为'director' 的get参数,这样我就可以了'/movies/similar?director=someone'

我该怎么做?

ruby routes ruby-on-rails helper

1
推荐指数
1
解决办法
1542
查看次数

Lookbehind和lookahead正则表达式

我有这样的字符串:

期刊/ cl/SantoNR90 ::: Michele Di Santo :: Libero Nigro :: Wilma Russo :::Modula-2中程序员定义的控制抽象

我需要捕捉Michele Di Santo,Libero Nigro,Wilma Russo但不是最后一个.

这个正则表达式几乎匹配我需要的:

/(?<=::).*?(?=::)/
Run Code Online (Sandbox Code Playgroud)

但它有问题,它捕获了第三个冒号

str.scan(/(?<=::).*?(?=::)/) #=> [":Michele Di Santo", ...]
Run Code Online (Sandbox Code Playgroud)

如您所见,第一场比赛的开头有一个冒号.

如何解决这个正则表达式,以避免这第三个冒号?

ruby regex

0
推荐指数
1
解决办法
277
查看次数

如何创建模板助手

我想创造eq帮手.它已经存在于ember-truth-helpers插件中,但我只需要eq帮助,所以我决定自己在我的插件中创建它.

assets/javascripts/discourse/helpers/eq.js.es6在我的插件中创建了包含以下内容的文件:

import { registerHelper } from 'discourse/lib/helpers';

registerHelper('eq', function(params) {
  return params[0] === params[1];
});
Run Code Online (Sandbox Code Playgroud)

并以这种方式在模板中使用它:

{{#if (eq param1 param2)}} <h1>hello</h1> {{/if}}
Run Code Online (Sandbox Code Playgroud)

但是eq没有定义.

创建助手的正确方法是什么?

helper handlebars.js ember.js discourse

0
推荐指数
1
解决办法
410
查看次数