我正在关注Michael Hartl的Rails教程。我正在编写代码以更改标题链接的部分,具体取决于用户是否已登录或退出。
当我将代码添加到_header部分时,甚至从教程本身复制,当我重新加载主页时,我得到了红色的错误页面。它显示以下消息:
undefined method `find_by' for #<#<Class:0x5b76358>:0x5b75b60>
然后它突出显示代码
<% if signed_in? %>
这是添加到_header部分的代码的一部分。
到目前为止,我完全编写了教程中显示的代码。我顺便使用Rails 4 ......所以我们从使用旧的Rails版本得到的'find_by'方法问题就不是这里的了。
提前致谢!
答案 0 :(得分:0)
从材料中学习是好的,但我建议你不要复制整个东西,因为它会大大减少学习量。如果你想通过id
查找,你可以使用find(id_value)
并且如果你想根据特定的列查找,那么find_by对于所有版本的rails中的模型都没有直接的方法,那么你应该使用{ {1}}这将有效。如果您需要更多说明或错误仍然存在,请询问。
答案 1 :(得分:0)
两种解决方案:
使用Rails 4而不是Rails 3.2(我认为你现在使用它) - 在Rails 4中引入了find_by
方法,而Michael Hartl的教程是为Rails 4编写的。
使用动态查找器,使用find_by
方法,例如:
@current_user ||= User.find_by_remember_token(remember_token)
我个人建议解决方案1。