【问题标题】:Where rails view finds these methods?rails view 在哪里找到这些方法?
【发布时间】:2020-07-05 20:54:31
【问题描述】:
我已经使用 Rails 将近 1 年了,作为一个学习者,对我来说最困难的事情是视图。
我有嵌入此的视图文件:<%= index %>。我试图找到该方法在代码中的定义位置。我搜索并找到了 index 的 12 个定义,但没有一个在帮助程序中。我用谷歌搜索了它(有时像options_from_collection_for_select OMG 之类的奇怪名称: 似乎是 ActionView 库的一部分)我也没有在动作视图中找到它。
所以我多次遇到此问题,无法找出视图如何自动找到此方法。
你能指导我在哪里搜索吗?
【问题讨论】:
标签:
ruby-on-rails
methods
actionview
【解决方案1】:
您应该使用 ruby 方法 source_location 来了解定义方法的位置。
但是您需要在可以访问它的上下文中执行它。所以,如果它是助手,那么你可以在 rails console 中尝试类似 helper.method(:index).source_location 的内容
如果它不是一个助手(因为它似乎不是),然后尝试添加一个断点,例如运行method(:index).source_location,你应该能够找到它
但是,您确定它不是局部变量,在调用部分时给出,或者来自 each_with_index 块?在没有更多上下文的情况下命名方法索引真的很奇怪:/
【解决方案2】:
了解方法在何处以及如何定义的一种简单方法是使用pry-byebug 的binding.pry。
您可以将<% binding.pry %> 放入您的视图文件中,重新加载页面,然后通过在Rails 服务器输出中出现的命令提示符中输入show-source method_name 来查看所需方法的来源。 (show-source index 在你的情况下。)