我为其中一个对象添加了一个额外的视图,以及相应的方法和路由,但我无法加载视图:
NoMethodError in Scans#parse
Showing J:/code/vsdb/app/views/scans/parse.html.erb where line #18 raised:
undefined method `parse' for #<Scan:0x23b0590>
Extracted source (around line #18):
15:
16: <div class="field">
17: <%= s.label :parse %><br />
18: <%= s.text_field :parse %>
19: </div>
20: <% end -%>
以下是扫描控制器中的方法。方法就在那里,所以我不明白错误信息是在抱怨什么。我尝试重启服务器。我打算用这种方法做更多的事情,我只想让它现在显示一下。
def parse
@scan = Scan.new
end
答案 0 :(得分:1)
错误是抱怨解析不是扫描模型的方法(不是您的控制器)。在这个上下文中,解析将是Rails为Scan的一个属性自动定义的方法,但在这种情况下它是缺失的。
如果您使用迁移向Scan添加了一个名为parse的属性,则可能需要运行rake db:migrate。
答案 1 :(得分:1)
通常,Rails视图无法访问控制器。如果你有一个需要调用的控制器方法,你应该在将控制权交给视图之前在操作中执行。
在您的情况下,您有一个名为@scan
的变量,它是Scan
类的一个实例。这是视图试图找到方法的地方。
正如评论中所指出的,你可以通过将特定方法声明为“帮助”方法来解决这个限制,这些方法会将它们暴露给视图。
ScanController < ApplicationController
helper_method :parse
def parse
@scan = Scan.new
end
...
end