【问题标题】:Understanding usage of symbols in routes.rb files了解 routes.rb 文件中符号的使用
【发布时间】:2013-07-18 12:21:56
【问题描述】:

我是 ruby​​ 的新手,我正在做一个项目。在 routes.rb 文件中,有一些我不明白的语法。更准确地说,我可以在这个文件中找到:

get :account #with a symbol
get 'notes'  #with no symbol

有什么区别?我想:account 应该在其他地方定义,在路由过程中更早,对吧?

【问题讨论】:

  • 不是哈希,是符号
  • @YevgeniyAnfilofyev 哦,对不起,我弄错了!我更新了我的帖子
  • 我觉得这个答案值得一看stackoverflow.com/a/11447568/2422778
  • Rails 在很多东西中都使用了符号。这只是惯例。例如,您可以使用:time => 15'time' => 15 来传递参数,这将是相同的。 Rails 甚至有自己的Hash 实现,他们称之为HashWithIndifferentAccess,您可以在其中可互换 使用符号或字符串来访问值。

标签: ruby-on-rails ruby routing


【解决方案1】:

get :account(使用符号)和get 'account'(使用字符串)在此上下文中完全相同。在您的路线中,符号将被 Rails 转换为字符串。

这只是一种编码风格,我个人使用符号是因为我喜欢在我的 IDE 中看到颜色,它可以帮助我更快地阅读我的代码。

并回答您的另一个问题:不,您不需要在任何地方定义符号,它们不是方法或变量。您可以将它们视为一个常量,其值等于它们的名称。

编辑:如果您仍然感到困惑,您可以阅读这份非常完整的 Ruby 符号指南:http://www.troubleshooters.com/codecorn/ruby/symbols.htm

【讨论】:

  • 好的,我阅读了文档。假设我想通过POST 通过两个输入传递一些变量:params[:id] 和whatever[:id]。是否可以为:id 传递两个不同的值?
  • 每个参数都转到params。如果你想传递一个哈希,可以通过params[:something](或params['something'])访问。就像,params[:whatever] 返回 => whatever[]。然后你可以调用你想要的任何键。因此,您将首先定义whatever[:id],然后将:id:whatever 都通过POST
  • @Doodad 所以你不能使用:id 两次?
  • 好吧,如果您使用GET 并将?id=1&id=5 放入链接中,id 不会覆盖另一个吗? :id(如果你写了"id",它的工作原理是一样的)只是一种告诉rails你的参数名称的方法。你不能有两个同名的,AFAIK。您可以使用两个不同的参数(idwhatever),一个输入您的 ID,另一个输入一个哈希值,其中键 :id 将返回另一个值,我认为这将是最接近的得到你所描述的,因为每个参数都转到 Rails 中的params
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 2016-10-04
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多