Rails新手:什么是“<<”意思?

时间:2016-01-12 10:10:27

标签: ruby-on-rails blacklight

我正在尝试将高级搜索工具添加到Blacklight安装中,但我知道有关rails的问题很简单。

我被困在一个(迄今为止很棒的)教程中,该教程指出:

Turn this feature on by adding to your CatalogController definition:
self.search_params_logic << :add_advanced_parse_q_to_solr

我可以找到我的CatalogController,但我不知道在哪里放置“&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;:add_advanced_pa​​rse_q_to_solr”。

它是顶级类定义的一部分吗?现在它说:

class CataligController < ApplicationController

我是否应该将“&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;:add_advanced_pa​​rse_q_to_solr”更换为“&lt; ApplicationController”,或者我应该追加它?

“:”是什么意思,“&lt;&lt;”意思?

如果有人对可以教我这些(我猜)基本语法的教程有任何好的参考,请在这里发布 - 我很想了解我在做什么而不是仅仅复制/粘贴我的方式!

2 个答案:

答案 0 :(得分:6)

添加的行应显示在CatalogController定义中,因此......

class CatalogController < ApplicationController
  self.search_params_logic << :add_advanced_parse_q_to_solr

<操作在第一行显示类继承。 <<操作意味着将右侧的值作为新元素添加到左侧的数组中。一种等效的方法是使用数组推送方法......

self.search_params_logic.push(:add_advanced_pa​​rse_q_to_solr)

这让我们想到了.意味着什么......它只是意味着你正在调用一个属于对象或对象类的方法。

例如

"Hasse".downcase
=> "hasse"

字符串有一个方法downcase,在上面的行中,你在字符串上调用该方法,结果将被返回。

self.search_params_logic表示您在self上调用方法(在这种情况下,selfCatalogController,因此您也可以CatalogController.search_params_logic但是它不是很优雅。)

search_params_logic返回一个数组,您可以操作数组...例如,添加或删除元素。

答案 1 :(得分:2)

好吧,array << "something"只是在array中添加了新元素。 :something - 是一个符号。在使用Rails之前,您应该学习Ruby语言的基本语法。从官方网站开始:https://www.ruby-lang.org/en/