gpt4 book ai didi

ruby-on-rails - 设计未定义的方法 `first_name'

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:50 25 4
gpt4 key购买 nike

所以,我正在使用设计来对 Rails 应用程序进行用户身份验证。我想为设计用户添加名字和姓氏。因此,我为用户数据库创建了新列。不幸的是,当我尝试我的表单时,我得到了“未定义的方法‘first_name’”。这是表格:

        <h2>Sign up</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>

<div><%= f.label :first_name %><br />
<%= f.first_name :first_name, autofocus: true %></div>

<div><%= f.label :last_name %><br />
<%= f.last_name :last_name, autofocus: true %></div>

<div><%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %></div>

<div><%= f.label :password %><br />
<%= f.password_field :password, autocomplete: "off" %></div>

<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %></div>

<div><%= f.submit "Sign up" %></div>
<% end %>

我确认数据库列实际上是使用控制台添加的。我输入了

user = User.new 进入控制台得到如下信息:

    "=> #<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil> "

当我键入 user.first_name 时,控制台返回 nil(这很好,因为没有返回错误,所以这些列确实已添加到数据库中)。到底是怎么回事?有哪些可能的修复方法?

最佳答案

undefined method 'first_name'

在你的情况下,错误是由于这一行

<%= f.first_name :first_name, autofocus: true %>

应该是这样的

<%= f.text_field :first_name, autofocus: true %>

还有这一行

<%= f.last_name :last_name, autofocus: true %>

必须更改为相同的以避免另一个错误

<%= f.text_field :last_name, autofocus: true %>

您使用的是 attribute names 而不是 text_field,错误也是如此。

看看这些 Guides 了解可用的 form_helpers 及其用法。这将非常有用。

关于ruby-on-rails - 设计未定义的方法 `first_name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24280763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com